Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2022-06-11 19:11:16 +0300
committerGitHub <noreply@github.com>2022-06-11 19:11:16 +0300
commit2afe14e0593a7905960b56ebb8c159f6e5577447 (patch)
tree5984462059bc6317b08e96ad2b150ed348b54f1b
parentcf296018f0996af419c7f35af8a80339aebc7101 (diff)
parent58d2a50a0d8b030d4dfb9dd3f04aaec31a9ae86b (diff)
Merge pull request #606 from nextcloud/dependabot/npm_and_yarn/pdfjs-dist-2.14.305
-rw-r--r--js/pdfjs/build/pdf.js1671
-rw-r--r--js/pdfjs/build/pdf.js.map2
-rw-r--r--js/pdfjs/build/pdf.sandbox.js14
-rw-r--r--js/pdfjs/build/pdf.sandbox.js.map2
-rw-r--r--js/pdfjs/build/pdf.worker.js1437
-rw-r--r--js/pdfjs/build/pdf.worker.js.map2
-rw-r--r--js/pdfjs/web/debugger.css103
-rw-r--r--js/pdfjs/web/debugger.js119
-rw-r--r--js/pdfjs/web/locale/be/viewer.properties3
-rw-r--r--js/pdfjs/web/locale/ca/viewer.properties4
-rw-r--r--js/pdfjs/web/locale/cs/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/cy/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/da/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/de/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/dsb/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/el/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/en-CA/viewer.properties7
-rw-r--r--js/pdfjs/web/locale/en-GB/viewer.properties7
-rw-r--r--js/pdfjs/web/locale/eo/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/es-AR/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/es-CL/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/es-ES/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/es-MX/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/et/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/eu/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/fr/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/fy-NL/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/gn/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/hsb/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/hu/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/hye/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ia/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/id/viewer.properties3
-rw-r--r--js/pdfjs/web/locale/is/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ja/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ka/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/kab/viewer.properties3
-rw-r--r--js/pdfjs/web/locale/kk/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ko/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/nb-NO/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/nl/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/nn-NO/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/oc/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/pa-IN/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/pl/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/pt-BR/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/pt-PT/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/rm/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/ru/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/sat/viewer.properties163
-rw-r--r--js/pdfjs/web/locale/sc/viewer.properties124
-rw-r--r--js/pdfjs/web/locale/sk/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/sl/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/sv-SE/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/tg/viewer.properties25
-rw-r--r--js/pdfjs/web/locale/th/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/tr/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/uk/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/vi/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/zh-CN/viewer.properties1
-rw-r--r--js/pdfjs/web/locale/zh-TW/viewer.properties1
-rw-r--r--js/pdfjs/web/viewer.css1287
-rw-r--r--js/pdfjs/web/viewer.html293
-rw-r--r--js/pdfjs/web/viewer.js1372
-rw-r--r--js/pdfjs/web/viewer.js.map2
-rw-r--r--package-lock.json42
-rw-r--r--package.json2
67 files changed, 4030 insertions, 2701 deletions
diff --git a/js/pdfjs/build/pdf.js b/js/pdfjs/build/pdf.js
index 3e1de0b..38c3c9b 100644
--- a/js/pdfjs/build/pdf.js
+++ b/js/pdfjs/build/pdf.js
@@ -1,6 +1,6 @@
/**
* @licstart The following is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*
* Copyright 2022 Mozilla Foundation
*
@@ -17,7 +17,7 @@
* limitations under the License.
*
* @licend The above is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*/
(function webpackUniversalModuleDefinition(root, factory) {
@@ -29,7 +29,7 @@
exports["pdfjs-dist/build/pdf"] = factory();
else
root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
-})(this, function() {
+})(this, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ([
@@ -42,7 +42,7 @@ return /******/ (() => { // webpackBootstrap
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
@@ -56,7 +56,6 @@ exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isArrayEqual = isArrayEqual;
exports.isAscii = isAscii;
-exports.isSameOrigin = isSameOrigin;
exports.objectFromMap = objectFromMap;
exports.objectSize = objectSize;
exports.setVerbosityLevel = setVerbosityLevel;
@@ -446,23 +445,6 @@ function assert(cond, msg) {
}
}
-function isSameOrigin(baseUrl, otherUrl) {
- let base;
-
- try {
- base = new URL(baseUrl);
-
- if (!base.origin || base.origin === "null") {
- return false;
- }
- } catch (e) {
- return false;
- }
-
- const other = new URL(otherUrl, base);
- return base.origin === other.origin;
-}
-
function _isValidProtocol(url) {
if (!url) {
return false;
@@ -716,14 +698,6 @@ function isLittleEndian() {
return view32[0] === 1;
}
-const IsLittleEndianCached = {
- get value() {
- return shadow(this, "value", isLittleEndian());
- }
-
-};
-exports.IsLittleEndianCached = IsLittleEndianCached;
-
function isEvalSupported() {
try {
new Function("");
@@ -733,13 +707,22 @@ function isEvalSupported() {
}
}
-const IsEvalSupportedCached = {
- get value() {
- return shadow(this, "value", isEvalSupported());
+class FeatureTest {
+ static get isLittleEndian() {
+ return shadow(this, "isLittleEndian", isLittleEndian());
}
-};
-exports.IsEvalSupportedCached = IsEvalSupportedCached;
+ static get isEvalSupported() {
+ return shadow(this, "isEvalSupported", isEvalSupported());
+ }
+
+ static get isOffscreenCanvasSupported() {
+ return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined");
+ }
+
+}
+
+exports.FeatureTest = FeatureTest;
const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
class Util {
@@ -747,6 +730,60 @@ class Util {
return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
}
+ static scaleMinMax(transform, minMax) {
+ let temp;
+
+ if (transform[0]) {
+ if (transform[0] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+
+ minMax[0] *= transform[0];
+ minMax[1] *= transform[0];
+
+ if (transform[3] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+
+ minMax[2] *= transform[3];
+ minMax[3] *= transform[3];
+ } else {
+ temp = minMax[0];
+ minMax[0] = minMax[2];
+ minMax[2] = temp;
+ temp = minMax[1];
+ minMax[1] = minMax[3];
+ minMax[3] = temp;
+
+ if (transform[1] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+
+ minMax[2] *= transform[1];
+ minMax[3] *= transform[1];
+
+ if (transform[2] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+
+ minMax[0] *= transform[2];
+ minMax[1] *= transform[2];
+ }
+
+ minMax[0] += transform[4];
+ minMax[1] += transform[4];
+ minMax[2] += transform[5];
+ minMax[3] += transform[5];
+ }
+
static transform(m1, m2) {
return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
}
@@ -811,31 +848,21 @@ class Util {
}
static intersect(rect1, rect2) {
- function compare(a, b) {
- return a - b;
- }
-
- const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
- const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
- const result = [];
- rect1 = Util.normalizeRect(rect1);
- rect2 = Util.normalizeRect(rect2);
+ const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));
+ const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));
- if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
- result[0] = orderedX[1];
- result[2] = orderedX[2];
- } else {
+ if (xLow > xHigh) {
return null;
}
- if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
- result[1] = orderedY[1];
- result[3] = orderedY[2];
- } else {
+ const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));
+ const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));
+
+ if (yLow > yHigh) {
return null;
}
- return result;
+ return [xLow, yLow, xHigh, yHigh];
}
static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {
@@ -1060,7 +1087,7 @@ exports.isNodeJS = isNodeJS;
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.build = exports.RenderTask = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;
+exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;
exports.getDocument = getDocument;
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
exports.version = void 0;
@@ -1071,34 +1098,45 @@ var _display_utils = __w_pdfjs_require__(5);
var _font_loader = __w_pdfjs_require__(7);
-var _node_utils = __w_pdfjs_require__(8);
-
-var _annotation_storage = __w_pdfjs_require__(9);
+var _annotation_storage = __w_pdfjs_require__(8);
var _canvas = __w_pdfjs_require__(10);
-var _worker_options = __w_pdfjs_require__(12);
+var _worker_options = __w_pdfjs_require__(13);
var _is_node = __w_pdfjs_require__(3);
-var _message_handler = __w_pdfjs_require__(13);
+var _message_handler = __w_pdfjs_require__(14);
-var _metadata = __w_pdfjs_require__(14);
+var _metadata = __w_pdfjs_require__(15);
-var _optional_content_config = __w_pdfjs_require__(15);
+var _optional_content_config = __w_pdfjs_require__(16);
-var _transport_stream = __w_pdfjs_require__(16);
+var _transport_stream = __w_pdfjs_require__(17);
-var _xfa_text = __w_pdfjs_require__(17);
+var _xfa_text = __w_pdfjs_require__(18);
const DEFAULT_RANGE_CHUNK_SIZE = 65536;
const RENDERING_CANCELLED_TIMEOUT = 100;
-const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
+let DefaultCanvasFactory = _display_utils.DOMCanvasFactory;
exports.DefaultCanvasFactory = DefaultCanvasFactory;
-const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
+let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory;
exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
-const DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;
+let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory;
exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;
+
+if (_is_node.isNodeJS) {
+ const {
+ NodeCanvasFactory,
+ NodeCMapReaderFactory,
+ NodeStandardFontDataFactory
+ } = __w_pdfjs_require__(19);
+
+ exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory;
+ exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory;
+ exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory;
+}
+
let createPDFNetworkStream;
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
@@ -1185,7 +1223,6 @@ function getDocument(src) {
params[key] = value;
}
- params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;
params.ignoreErrors = params.stopAtErrors !== true;
@@ -1193,14 +1230,26 @@ function getDocument(src) {
params.pdfBug = params.pdfBug === true;
params.enableXfa = params.enableXfa === true;
+ if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {
+ params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;
+ }
+
if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {
params.docBaseUrl = null;
}
- if (!Number.isInteger(params.maxImageSize)) {
+ if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {
params.maxImageSize = -1;
}
+ if (typeof params.cMapUrl !== "string") {
+ params.cMapUrl = null;
+ }
+
+ if (typeof params.standardFontDataUrl !== "string") {
+ params.standardFontDataUrl = null;
+ }
+
if (typeof params.useWorkerFetch !== "boolean") {
params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;
}
@@ -1217,7 +1266,7 @@ function getDocument(src) {
params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;
}
- if (typeof params.ownerDocument === "undefined") {
+ if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) {
params.ownerDocument = globalThis.document;
}
@@ -1306,7 +1355,7 @@ async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", {
docId,
- apiVersion: '2.13.216',
+ apiVersion: '2.14.305',
source: {
data: source.data,
url: source.url,
@@ -1335,17 +1384,13 @@ async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
}
class PDFDocumentLoadingTask {
- static get idCounters() {
- return (0, _util.shadow)(this, "idCounters", {
- doc: 0
- });
- }
+ static #docId = 0;
constructor() {
this._capability = (0, _util.createPromiseCapability)();
this._transport = null;
this._worker = null;
- this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;
+ this.docId = `d${PDFDocumentLoadingTask.#docId++}`;
this.destroyed = false;
this.onPassword = null;
this.onProgress = null;
@@ -1617,6 +1662,7 @@ class PDFPageProxy {
this._pdfBug = pdfBug;
this.commonObjs = transport.commonObjs;
this.objs = new PDFObjects();
+ this._bitmaps = new Set();
this.cleanupAfterRender = false;
this.pendingCleanup = false;
this._intentStates = new Map();
@@ -1721,7 +1767,8 @@ class PDFPageProxy {
canvasFactory = null,
background = null,
optionalContentConfigPromise = null,
- annotationCanvasMap = null
+ annotationCanvasMap = null,
+ pageColors = null
}) {
if (arguments[0]?.renderInteractiveForms !== undefined) {
(0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead.");
@@ -1827,7 +1874,8 @@ class PDFPageProxy {
pageIndex: this._pageIndex,
canvasFactory: canvasFactoryInstance,
useRequestAnimationFrame: !intentPrint,
- pdfBug: this._pdfBug
+ pdfBug: this._pdfBug,
+ pageColors
});
(intentState.renderTasks ||= new Set()).add(internalRenderTask);
const renderTask = internalRenderTask.task;
@@ -1974,6 +2022,12 @@ class PDFPageProxy {
this.objs.clear();
+ for (const bitmap of this._bitmaps) {
+ bitmap.close();
+ }
+
+ this._bitmaps.clear();
+
this._annotationPromises.clear();
this._jsActionsPromise = null;
@@ -2014,6 +2068,12 @@ class PDFPageProxy {
this._stats = new _display_utils.StatTimer();
}
+ for (const bitmap of this._bitmaps) {
+ bitmap.close();
+ }
+
+ this._bitmaps.clear();
+
this.pendingCleanup = false;
return true;
}
@@ -2209,6 +2269,7 @@ const PDFWorkerUtil = {
fallbackWorkerSrc: null,
fakeWorkerId: 0
};
+exports.PDFWorkerUtil = PDFWorkerUtil;
{
if (_is_node.isNodeJS && typeof require === "function") {
PDFWorkerUtil.isWorkerDisabled = true;
@@ -2221,6 +2282,23 @@ const PDFWorkerUtil = {
}
}
+ PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {
+ let base;
+
+ try {
+ base = new URL(baseUrl);
+
+ if (!base.origin || base.origin === "null") {
+ return false;
+ }
+ } catch (e) {
+ return false;
+ }
+
+ const other = new URL(otherUrl, base);
+ return base.origin === other.origin;
+ };
+
PDFWorkerUtil.createCDNWrapper = function (url) {
const wrapper = `importScripts("${url}");`;
return URL.createObjectURL(new Blob([wrapper]));
@@ -2228,16 +2306,14 @@ const PDFWorkerUtil = {
}
class PDFWorker {
- static get _workerPorts() {
- return (0, _util.shadow)(this, "_workerPorts", new WeakMap());
- }
+ static #workerPorts = new WeakMap();
constructor({
name = null,
port = null,
verbosity = (0, _util.getVerbosityLevel)()
} = {}) {
- if (port && PDFWorker._workerPorts.has(port)) {
+ if (port && PDFWorker.#workerPorts.has(port)) {
throw new Error("Cannot use more than one PDFWorker per port.");
}
@@ -2250,7 +2326,7 @@ class PDFWorker {
this._messageHandler = null;
if (port) {
- PDFWorker._workerPorts.set(port, this);
+ PDFWorker.#workerPorts.set(port, this);
this._initializeFromPort(port);
@@ -2286,7 +2362,7 @@ class PDFWorker {
let workerSrc = PDFWorker.workerSrc;
try {
- if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
+ if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {
workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);
}
@@ -2353,15 +2429,8 @@ class PDFWorker {
});
const sendTest = () => {
- const testObj = new Uint8Array([255]);
-
- try {
- messageHandler.send("test", testObj, [testObj.buffer]);
- } catch (ex) {
- (0, _util.warn)("Cannot use postMessage transfers.");
- testObj[0] = 0;
- messageHandler.send("test", testObj);
- }
+ const testObj = new Uint8Array();
+ messageHandler.send("test", testObj, [testObj.buffer]);
};
sendTest();
@@ -2414,8 +2483,7 @@ class PDFWorker {
this._webWorker = null;
}
- PDFWorker._workerPorts.delete(this._port);
-
+ PDFWorker.#workerPorts.delete(this._port);
this._port = null;
if (this._messageHandler) {
@@ -2430,8 +2498,8 @@ class PDFWorker {
throw new Error("PDFWorker.fromPort - invalid method signature.");
}
- if (this._workerPorts.has(params.port)) {
- return this._workerPorts.get(params.port);
+ if (this.#workerPorts.has(params.port)) {
+ return this.#workerPorts.get(params.port);
}
return new PDFWorker(params);
@@ -2539,7 +2607,7 @@ class WorkerTransport {
getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) {
let renderingIntent = _util.RenderingIntentFlag.DISPLAY;
- let lastModified = "";
+ let annotationHash = "";
switch (intent) {
case "any":
@@ -2571,7 +2639,7 @@ class WorkerTransport {
case _util.AnnotationMode.ENABLE_STORAGE:
renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;
- lastModified = this.annotationStorage.lastModified;
+ annotationHash = this.annotationStorage.hash;
break;
default:
@@ -2584,7 +2652,7 @@ class WorkerTransport {
return {
renderingIntent,
- cacheKey: `${renderingIntent}_${lastModified}`
+ cacheKey: `${renderingIntent}_${annotationHash}`
};
}
@@ -2900,8 +2968,25 @@ class WorkerTransport {
pageProxy.objs.resolve(id, imageData);
const MAX_IMAGE_SIZE_TO_STORE = 8000000;
- if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
- pageProxy.cleanupAfterRender = true;
+ if (imageData) {
+ let length;
+
+ if (imageData.bitmap) {
+ const {
+ bitmap,
+ width,
+ height
+ } = imageData;
+ length = width * height * 4;
+
+ pageProxy._bitmaps.add(bitmap);
+ } else {
+ length = imageData.data?.length || 0;
+ }
+
+ if (length > MAX_IMAGE_SIZE_TO_STORE) {
+ pageProxy.cleanupAfterRender = true;
+ }
}
break;
@@ -3232,9 +3317,7 @@ class RenderTask {
exports.RenderTask = RenderTask;
class InternalRenderTask {
- static get canvasInUse() {
- return (0, _util.shadow)(this, "canvasInUse", new WeakSet());
- }
+ static #canvasInUse = new WeakSet();
constructor({
callback,
@@ -3246,7 +3329,8 @@ class InternalRenderTask {
pageIndex,
canvasFactory,
useRequestAnimationFrame = false,
- pdfBug = false
+ pdfBug = false,
+ pageColors = null
}) {
this.callback = callback;
this.params = params;
@@ -3258,6 +3342,7 @@ class InternalRenderTask {
this._pageIndex = pageIndex;
this.canvasFactory = canvasFactory;
this._pdfBug = pdfBug;
+ this.pageColors = pageColors;
this.running = false;
this.graphicsReadyCallback = null;
this.graphicsReady = false;
@@ -3285,11 +3370,11 @@ class InternalRenderTask {
}
if (this._canvas) {
- if (InternalRenderTask.canvasInUse.has(this._canvas)) {
+ if (InternalRenderTask.#canvasInUse.has(this._canvas)) {
throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
}
- InternalRenderTask.canvasInUse.add(this._canvas);
+ InternalRenderTask.#canvasInUse.add(this._canvas);
}
if (this._pdfBug && globalThis.StepperManager?.enabled) {
@@ -3305,7 +3390,7 @@ class InternalRenderTask {
imageLayer,
background
} = this.params;
- this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap);
+ this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors);
this.gfx.beginDrawing({
transform,
viewport,
@@ -3329,7 +3414,7 @@ class InternalRenderTask {
}
if (this._canvas) {
- InternalRenderTask.canvasInUse.delete(this._canvas);
+ InternalRenderTask.#canvasInUse.delete(this._canvas);
}
this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
@@ -3393,7 +3478,7 @@ class InternalRenderTask {
this.gfx.endDrawing();
if (this._canvas) {
- InternalRenderTask.canvasInUse.delete(this._canvas);
+ InternalRenderTask.#canvasInUse.delete(this._canvas);
}
this.callback();
@@ -3403,9 +3488,9 @@ class InternalRenderTask {
}
-const version = '2.13.216';
+const version = '2.14.305';
exports.version = version;
-const build = '399a0ec60';
+const build = 'eaaa8b4ad';
exports.build = build;
/***/ }),
@@ -4434,7 +4519,7 @@ class FontFaceObject {
return this.compiledGlyphs[character] = function (c, size) {};
}
- if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
+ if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) {
const jsBuf = [];
for (const current of cmds) {
@@ -4469,96 +4554,15 @@ exports.FontFaceObject = FontFaceObject;
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;
-
-var _base_factory = __w_pdfjs_require__(6);
-
-var _is_node = __w_pdfjs_require__(3);
-
-var _util = __w_pdfjs_require__(1);
-
-let NodeCanvasFactory = class {
- constructor() {
- (0, _util.unreachable)("Not implemented: NodeCanvasFactory");
- }
-
-};
-exports.NodeCanvasFactory = NodeCanvasFactory;
-let NodeCMapReaderFactory = class {
- constructor() {
- (0, _util.unreachable)("Not implemented: NodeCMapReaderFactory");
- }
-
-};
-exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
-let NodeStandardFontDataFactory = class {
- constructor() {
- (0, _util.unreachable)("Not implemented: NodeStandardFontDataFactory");
- }
-
-};
-exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;
-
-if (_is_node.isNodeJS) {
- 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");
-
- return Canvas.createCanvas(width, height);
- }
-
- };
- exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory {
- _fetchData(url, compressionType) {
- return fetchData(url).then(data => {
- return {
- cMapData: data,
- compressionType
- };
- });
- }
-
- };
- exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends _base_factory.BaseStandardFontDataFactory {
- _fetchData(url) {
- return fetchData(url);
- }
-
- };
-}
-
-/***/ }),
-/* 9 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
- value: true
-}));
exports.AnnotationStorage = void 0;
+var _murmurhash = __w_pdfjs_require__(9);
+
var _util = __w_pdfjs_require__(1);
class AnnotationStorage {
constructor() {
this._storage = new Map();
- this._timeStamp = Date.now();
this._modified = false;
this.onSetModified = null;
this.onResetModified = null;
@@ -4574,6 +4578,10 @@ class AnnotationStorage {
return Object.assign(defaultValue, value);
}
+ getRawValue(key) {
+ return this._storage.get(key);
+ }
+
setValue(key, value) {
const obj = this._storage.get(key);
@@ -4593,8 +4601,6 @@ class AnnotationStorage {
}
if (modified) {
- this._timeStamp = Date.now();
-
this._setModified();
}
}
@@ -4631,8 +4637,14 @@ class AnnotationStorage {
return this._storage.size > 0 ? this._storage : null;
}
- get lastModified() {
- return this._timeStamp.toString();
+ get hash() {
+ const hash = new _murmurhash.MurmurHash3_64();
+
+ for (const [key, value] of this._storage) {
+ hash.update(`${key}:${JSON.stringify(value)}`);
+ }
+
+ return hash.hexdigest();
}
}
@@ -4640,6 +4652,131 @@ class AnnotationStorage {
exports.AnnotationStorage = AnnotationStorage;
/***/ }),
+/* 9 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.MurmurHash3_64 = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+const SEED = 0xc3d2e1f0;
+const MASK_HIGH = 0xffff0000;
+const MASK_LOW = 0xffff;
+
+class MurmurHash3_64 {
+ constructor(seed) {
+ this.h1 = seed ? seed & 0xffffffff : SEED;
+ this.h2 = seed ? seed & 0xffffffff : SEED;
+ }
+
+ update(input) {
+ let data, length;
+
+ if (typeof input === "string") {
+ data = new Uint8Array(input.length * 2);
+ length = 0;
+
+ for (let i = 0, ii = input.length; i < ii; i++) {
+ const code = input.charCodeAt(i);
+
+ if (code <= 0xff) {
+ data[length++] = code;
+ } else {
+ data[length++] = code >>> 8;
+ data[length++] = code & 0xff;
+ }
+ }
+ } else if ((0, _util.isArrayBuffer)(input)) {
+ data = input.slice();
+ length = data.byteLength;
+ } else {
+ throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
+ }
+
+ const blockCounts = length >> 2;
+ const tailLength = length - blockCounts * 4;
+ const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
+ let k1 = 0,
+ k2 = 0;
+ let h1 = this.h1,
+ h2 = this.h2;
+ const C1 = 0xcc9e2d51,
+ C2 = 0x1b873593;
+ const C1_LOW = C1 & MASK_LOW,
+ C2_LOW = C2 & MASK_LOW;
+
+ for (let i = 0; i < blockCounts; i++) {
+ if (i & 1) {
+ k1 = dataUint32[i];
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+ k1 = k1 << 15 | k1 >>> 17;
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+ h1 ^= k1;
+ h1 = h1 << 13 | h1 >>> 19;
+ h1 = h1 * 5 + 0xe6546b64;
+ } else {
+ k2 = dataUint32[i];
+ k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
+ k2 = k2 << 15 | k2 >>> 17;
+ k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
+ h2 ^= k2;
+ h2 = h2 << 13 | h2 >>> 19;
+ h2 = h2 * 5 + 0xe6546b64;
+ }
+ }
+
+ k1 = 0;
+
+ switch (tailLength) {
+ case 3:
+ k1 ^= data[blockCounts * 4 + 2] << 16;
+
+ case 2:
+ k1 ^= data[blockCounts * 4 + 1] << 8;
+
+ case 1:
+ k1 ^= data[blockCounts * 4];
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+ k1 = k1 << 15 | k1 >>> 17;
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+
+ if (blockCounts & 1) {
+ h1 ^= k1;
+ } else {
+ h2 ^= k1;
+ }
+
+ }
+
+ this.h1 = h1;
+ this.h2 = h2;
+ }
+
+ hexdigest() {
+ let h1 = this.h1,
+ h2 = this.h2;
+ h1 ^= h2 >>> 1;
+ h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
+ h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
+ h1 ^= h2 >>> 1;
+ h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
+ h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
+ h1 ^= h2 >>> 1;
+ const hex1 = (h1 >>> 0).toString(16),
+ hex2 = (h2 >>> 0).toString(16);
+ return hex1.padStart(8, "0") + hex2.padStart(8, "0");
+ }
+
+}
+
+exports.MurmurHash3_64 = MurmurHash3_64;
+
+/***/ }),
/* 10 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -4654,6 +4791,10 @@ var _util = __w_pdfjs_require__(1);
var _pattern_helper = __w_pdfjs_require__(11);
+var _image_utils = __w_pdfjs_require__(12);
+
+var _is_node = __w_pdfjs_require__(3);
+
var _display_utils = __w_pdfjs_require__(5);
const MIN_FONT_SIZE = 16;
@@ -4941,6 +5082,10 @@ class CachedCanvases {
return canvasEntry;
}
+ delete(id) {
+ delete this.cache[id];
+ }
+
clear() {
for (const id in this.cache) {
const canvasEntry = this.cache[id];
@@ -4951,21 +5096,65 @@ class CachedCanvases {
}
+function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {
+ const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform;
+
+ if (b === 0 && c === 0) {
+ const tlX = destX * a + tx;
+ const rTlX = Math.round(tlX);
+ const tlY = destY * d + ty;
+ const rTlY = Math.round(tlY);
+ const brX = (destX + destW) * a + tx;
+ const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
+ const brY = (destY + destH) * d + ty;
+ const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
+ ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);
+ ctx.setTransform(a, b, c, d, tx, ty);
+ return [rWidth, rHeight];
+ }
+
+ if (a === 0 && d === 0) {
+ const tlX = destY * c + tx;
+ const rTlX = Math.round(tlX);
+ const tlY = destX * b + ty;
+ const rTlY = Math.round(tlY);
+ const brX = (destY + destH) * c + tx;
+ const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
+ const brY = (destX + destW) * b + ty;
+ const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
+ ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);
+ ctx.setTransform(a, b, c, d, tx, ty);
+ return [rHeight, rWidth];
+ }
+
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);
+ const scaleX = Math.hypot(a, b);
+ const scaleY = Math.hypot(c, d);
+ return [scaleX * destW, scaleY * destH];
+}
+
function compileType3Glyph(imgData) {
+ const {
+ width,
+ height
+ } = imgData;
+
+ if (!COMPILE_TYPE3_GLYPHS || width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {
+ return null;
+ }
+
const POINT_TO_PROCESS_LIMIT = 1000;
const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
- const width = imgData.width,
- height = imgData.height,
- width1 = width + 1;
- let i, ii, j, j0;
- const points = new Uint8Array(width1 * (height + 1));
- const lineSize = width + 7 & ~7,
- data0 = imgData.data;
- const data = new Uint8Array(lineSize * height);
- let pos = 0;
-
- for (i = 0, ii = data0.length; i < ii; i++) {
- const elem = data0[i];
+ const width1 = width + 1;
+ let points = new Uint8Array(width1 * (height + 1));
+ let i, j, j0;
+ const lineSize = width + 7 & ~7;
+ let data = new Uint8Array(lineSize * height),
+ pos = 0;
+
+ for (const elem of imgData.data) {
let mask = 128;
while (mask > 0) {
@@ -5055,7 +5244,13 @@ function compileType3Glyph(imgData) {
}
const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
- const outlines = [];
+ let path, outlines, coords;
+
+ if (!_is_node.isNodeJS) {
+ path = new Path2D();
+ } else {
+ outlines = [];
+ }
for (i = 0; count && i <= height; i++) {
let p = i * width1;
@@ -5069,7 +5264,12 @@ function compileType3Glyph(imgData) {
continue;
}
- const coords = [p % width1, i];
+ if (path) {
+ path.moveTo(p % width1, i);
+ } else {
+ coords = [p % width1, i];
+ }
+
const p0 = p;
let type = points[p];
@@ -5090,33 +5290,48 @@ function compileType3Glyph(imgData) {
points[p] &= type >> 2 | type << 2;
}
- coords.push(p % width1, p / width1 | 0);
+ if (path) {
+ path.lineTo(p % width1, p / width1 | 0);
+ } else {
+ coords.push(p % width1, p / width1 | 0);
+ }
if (!points[p]) {
--count;
}
} while (p0 !== p);
- outlines.push(coords);
+ if (!path) {
+ outlines.push(coords);
+ }
+
--i;
}
+ data = null;
+ points = null;
+
const drawOutline = function (c) {
c.save();
c.scale(1 / width, -1 / height);
c.translate(0, -height);
- c.beginPath();
- for (let k = 0, kk = outlines.length; k < kk; k++) {
- const o = outlines[k];
- c.moveTo(o[0], o[1]);
+ if (path) {
+ c.fill(path);
+ } else {
+ c.beginPath();
+
+ for (const o of outlines) {
+ c.moveTo(o[0], o[1]);
- for (let l = 2, ll = o.length; l < ll; l += 2) {
- c.lineTo(o[l], o[l + 1]);
+ for (let l = 2, ll = o.length; l < ll; l += 2) {
+ c.lineTo(o[l], o[l + 1]);
+ }
}
+
+ c.fill();
}
- c.fill();
c.beginPath();
c.restore();
};
@@ -5172,11 +5387,38 @@ class CanvasExtraState {
this.maxY = Math.max(this.maxY, y);
}
- updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {
+ updateRectMinMax(transform, rect) {
+ const p1 = _util.Util.applyTransform(rect, transform);
+
+ const p2 = _util.Util.applyTransform(rect.slice(2), transform);
+
+ this.minX = Math.min(this.minX, p1[0], p2[0]);
+ this.minY = Math.min(this.minY, p1[1], p2[1]);
+ this.maxX = Math.max(this.maxX, p1[0], p2[0]);
+ this.maxY = Math.max(this.maxY, p1[1], p2[1]);
+ }
+
+ updateScalingPathMinMax(transform, minMax) {
+ _util.Util.scaleMinMax(transform, minMax);
+
+ this.minX = Math.min(this.minX, minMax[0]);
+ this.maxX = Math.max(this.maxX, minMax[1]);
+ this.minY = Math.min(this.minY, minMax[2]);
+ this.maxY = Math.max(this.maxY, minMax[3]);
+ }
+
+ updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {
const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);
- this.updatePathMinMax(transform, box[0], box[1]);
- this.updatePathMinMax(transform, box[2], box[3]);
+ if (minMax) {
+ minMax[0] = Math.min(minMax[0], box[0], box[2]);
+ minMax[1] = Math.max(minMax[1], box[0], box[2]);
+ minMax[2] = Math.min(minMax[2], box[1], box[3]);
+ minMax[3] = Math.max(minMax[3], box[1], box[3]);
+ return;
+ }
+
+ this.updateRectMinMax(transform, box);
}
getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {
@@ -5206,6 +5448,10 @@ class CanvasExtraState {
this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);
}
+ isEmptyClip() {
+ return this.minX === Infinity;
+ }
+
startNewPathAndClipBox(box) {
this.clipBox = box;
this.minX = Infinity;
@@ -5263,7 +5509,7 @@ function putBinaryImageData(ctx, imgData, transferMaps = null) {
const dest32DataLength = dest32.length;
const fullSrcDiff = width + 7 >> 3;
let white = 0xffffffff;
- let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
+ let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
if (transferMapGray) {
if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
@@ -5407,6 +5653,11 @@ function putBinaryImageData(ctx, imgData, transferMaps = null) {
}
function putBinaryImageMask(ctx, imgData) {
+ if (imgData.bitmap) {
+ ctx.drawImage(imgData.bitmap, 0, 0);
+ return;
+ }
+
const height = imgData.height,
width = imgData.width;
const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
@@ -5419,24 +5670,15 @@ function putBinaryImageMask(ctx, imgData) {
for (let i = 0; i < totalChunks; i++) {
const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
- let destPos = 3;
-
- for (let j = 0; j < thisChunkHeight; j++) {
- let elem,
- mask = 0;
-
- for (let k = 0; k < width; k++) {
- if (!mask) {
- elem = src[srcPos++];
- mask = 128;
- }
-
- dest[destPos] = elem & mask ? 0 : 255;
- destPos += 4;
- mask >>= 1;
- }
- }
-
+ ({
+ srcPos
+ } = (0, _image_utils.applyMaskImageData)({
+ src,
+ srcPos,
+ dest,
+ width,
+ height: thisChunkHeight
+ }));
ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
}
}
@@ -5458,9 +5700,8 @@ function copyCtxState(sourceCtx, destCtx) {
}
}
-function resetCtxToDefault(ctx) {
- ctx.strokeStyle = "#000000";
- ctx.fillStyle = "#000000";
+function resetCtxToDefault(ctx, foregroundColor) {
+ ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000";
ctx.fillRule = "nonzero";
ctx.globalAlpha = 1;
ctx.lineWidth = 1;
@@ -5585,7 +5826,7 @@ const NORMAL_CLIP = {};
const EO_CLIP = {};
class CanvasGraphics {
- constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap) {
+ constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) {
this.ctx = canvasCtx;
this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
this.stateStack = [];
@@ -5615,12 +5856,24 @@ class CanvasGraphics {
this.viewportScale = 1;
this.outputScaleX = 1;
this.outputScaleY = 1;
+ this.backgroundColor = pageColors?.background || null;
+ this.foregroundColor = pageColors?.foreground || null;
if (canvasCtx) {
addContextCurrentTransform(canvasCtx);
}
+ this._cachedScaleForStroking = null;
this._cachedGetSinglePixelWidth = null;
+ this._cachedBitmapsMap = new Map();
+ }
+
+ getObject(data, fallback = null) {
+ if (typeof data === "string") {
+ return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data);
+ }
+
+ return fallback;
}
beginDrawing({
@@ -5631,8 +5884,43 @@ class CanvasGraphics {
}) {
const width = this.ctx.canvas.width;
const height = this.ctx.canvas.height;
+ const defaultBackgroundColor = background || "#ffffff";
this.ctx.save();
- this.ctx.fillStyle = background || "rgb(255, 255, 255)";
+
+ if (this.foregroundColor && this.backgroundColor) {
+ this.ctx.fillStyle = this.foregroundColor;
+ const fg = this.foregroundColor = this.ctx.fillStyle;
+ this.ctx.fillStyle = this.backgroundColor;
+ const bg = this.backgroundColor = this.ctx.fillStyle;
+ let isValidDefaultBg = true;
+ let defaultBg = defaultBackgroundColor;
+ this.ctx.fillStyle = defaultBackgroundColor;
+ defaultBg = this.ctx.fillStyle;
+ isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);
+
+ if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) {
+ this.foregroundColor = this.backgroundColor = null;
+ } else {
+ const cB = parseInt(defaultBg.slice(1), 16);
+ const rB = (cB && 0xff0000) >> 16;
+ const gB = (cB && 0x00ff00) >> 8;
+ const bB = cB && 0x0000ff;
+
+ const newComp = x => {
+ x /= 255;
+ return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
+ };
+
+ const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB));
+
+ this.selectColor = (r, g, b) => {
+ const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);
+ return Math.round(lumC) === lumB ? bg : fg;
+ };
+ }
+ }
+
+ this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;
this.ctx.fillRect(0, 0, width, height);
this.ctx.restore();
@@ -5646,7 +5934,7 @@ class CanvasGraphics {
}
this.ctx.save();
- resetCtxToDefault(this.ctx);
+ resetCtxToDefault(this.ctx, this.foregroundColor);
if (transform) {
this.ctx.transform.apply(this.ctx, transform);
@@ -5657,7 +5945,6 @@ class CanvasGraphics {
this.ctx.transform.apply(this.ctx, viewport.transform);
this.viewportScale = viewport.scale;
this.baseTransform = this.ctx.mozCurrentTransform.slice();
- this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
if (this.imageLayer) {
this.imageLayer.beginLayout();
@@ -5738,6 +6025,18 @@ class CanvasGraphics {
this.cachedCanvases.clear();
this.cachedPatterns.clear();
+ for (const cache of this._cachedBitmapsMap.values()) {
+ for (const canvas of cache.values()) {
+ if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) {
+ canvas.width = canvas.height = 0;
+ }
+ }
+
+ cache.clear();
+ }
+
+ this._cachedBitmapsMap.clear();
+
if (this.imageLayer) {
this.imageLayer.endLayout();
}
@@ -5767,7 +6066,7 @@ class CanvasGraphics {
heightScale /= paintHeight / newHeight;
}
- tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+ tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight, false);
tmpCtx = tmpCanvas.context;
tmpCtx.clearRect(0, 0, newWidth, newHeight);
tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
@@ -5786,16 +6085,48 @@ class CanvasGraphics {
_createMaskCanvas(img) {
const ctx = this.ctx;
- const width = img.width,
- height = img.height;
+ const {
+ width,
+ height
+ } = img;
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;
+ const currentTransform = ctx.mozCurrentTransform;
+ let cache, cacheKey, scaled, maskCanvas;
+
+ if ((img.bitmap || img.data) && img.count > 1) {
+ const mainKey = img.bitmap || img.data.buffer;
+ const withoutTranslation = currentTransform.slice(0, 4);
+ cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]);
+ cache = this._cachedBitmapsMap.get(mainKey);
+
+ if (!cache) {
+ cache = new Map();
+
+ this._cachedBitmapsMap.set(mainKey, cache);
+ }
+
+ const cachedImage = cache.get(cacheKey);
- let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
+ if (cachedImage && !isPatternFill) {
+ const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);
+ const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);
+ return {
+ canvas: cachedImage,
+ offsetX,
+ offsetY
+ };
+ }
+
+ scaled = cachedImage;
+ }
+
+ if (!scaled) {
+ maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false);
+ putBinaryImageMask(maskCanvas.context, img);
+ }
+
+ let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);
maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
@@ -5805,8 +6136,8 @@ class CanvasGraphics {
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 drawnWidth = Math.round(rect[2] - rect[0]) || 1;
+ const drawnHeight = Math.round(rect[3] - rect[1]) || 1;
const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
const fillCtx = fillCanvas.context;
const offsetX = Math.min(cord1[0], cord2[0]);
@@ -5814,16 +6145,29 @@ class CanvasGraphics {
fillCtx.translate(-offsetX, -offsetY);
fillCtx.transform.apply(fillCtx, maskToCanvas);
- const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+ if (!scaled) {
+ scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+ scaled = scaled.img;
+
+ if (cache && isPatternFill) {
+ cache.set(cacheKey, scaled);
+ }
+ }
fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);
- fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
+ drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.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, _pattern_helper.PathType.FILL) : fillColor;
fillCtx.fillRect(0, 0, width, height);
+
+ if (cache && !isPatternFill) {
+ this.cachedCanvases.delete("fillCanvas");
+ cache.set(cacheKey, fillCanvas.canvas);
+ }
+
return {
canvas: fillCanvas.canvas,
offsetX: Math.round(offsetX),
@@ -5832,6 +6176,10 @@ class CanvasGraphics {
}
setLineWidth(width) {
+ if (width !== this.current.lineWidth) {
+ this._cachedScaleForStroking = null;
+ }
+
this.current.lineWidth = width;
this.ctx.lineWidth = width;
}
@@ -6022,21 +6370,26 @@ class CanvasGraphics {
this.checkSMaskState();
this.pendingClip = null;
+ this._cachedScaleForStroking = null;
this._cachedGetSinglePixelWidth = null;
}
}
transform(a, b, c, d, e, f) {
this.ctx.transform(a, b, c, d, e, f);
+ this._cachedScaleForStroking = null;
this._cachedGetSinglePixelWidth = null;
}
- constructPath(ops, args) {
+ constructPath(ops, args, minMax) {
const ctx = this.ctx;
const current = this.current;
let x = current.x,
y = current.y;
let startX, startY;
+ const currentTransform = ctx.mozCurrentTransform;
+ const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;
+ const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;
for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
switch (ops[i] | 0) {
@@ -6057,8 +6410,10 @@ class CanvasGraphics {
ctx.lineTo(x, yh);
}
- current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
- current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);
+ if (!isScalingMatrix) {
+ current.updateRectMinMax(currentTransform, [x, y, xw, yh]);
+ }
+
ctx.closePath();
break;
@@ -6066,14 +6421,22 @@ class CanvasGraphics {
x = args[j++];
y = args[j++];
ctx.moveTo(x, y);
- current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+
+ if (!isScalingMatrix) {
+ current.updatePathMinMax(currentTransform, x, y);
+ }
+
break;
case _util.OPS.lineTo:
x = args[j++];
y = args[j++];
ctx.lineTo(x, y);
- current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+
+ if (!isScalingMatrix) {
+ current.updatePathMinMax(currentTransform, x, y);
+ }
+
break;
case _util.OPS.curveTo:
@@ -6082,7 +6445,7 @@ class CanvasGraphics {
x = args[j + 4];
y = args[j + 5];
ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
- current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);
j += 6;
break;
@@ -6090,7 +6453,7 @@ class CanvasGraphics {
startX = x;
startY = y;
ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
- current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);
x = args[j + 2];
y = args[j + 3];
j += 4;
@@ -6102,7 +6465,7 @@ class CanvasGraphics {
x = args[j + 2];
y = args[j + 3];
ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
- current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], x, y, x, y);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);
j += 4;
break;
@@ -6112,6 +6475,10 @@ class CanvasGraphics {
}
}
+ if (isScalingMatrix) {
+ current.updateScalingPathMinMax(currentTransform, minMaxForBezier);
+ }
+
current.setCurrentPoint(x, y);
}
@@ -6127,25 +6494,12 @@ class CanvasGraphics {
if (this.contentVisible) {
if (typeof strokeColor === "object" && strokeColor?.getPattern) {
- const lineWidth = this.getSinglePixelWidth();
ctx.save();
ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);
- ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
- ctx.stroke();
+ this.rescaleAndStroke(false);
ctx.restore();
} else {
- const lineWidth = this.getSinglePixelWidth();
-
- if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
- ctx.save();
- ctx.resetTransform();
- ctx.lineWidth = Math.floor(this._combinedScaleFactor);
- ctx.stroke();
- ctx.restore();
- } else {
- ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
- ctx.stroke();
- }
+ this.rescaleAndStroke(true);
}
}
@@ -6361,7 +6715,7 @@ class CanvasGraphics {
this.moveText(0, this.current.leading);
}
- paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+ paintChar(character, x, y, patternTransform) {
const ctx = this.ctx;
const current = this.current;
const font = current.font;
@@ -6391,11 +6745,6 @@ class CanvasGraphics {
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
- if (resetLineWidthToOne) {
- ctx.resetTransform();
- ctx.lineWidth = Math.floor(this._combinedScaleFactor);
- }
-
ctx.stroke();
}
@@ -6406,16 +6755,7 @@ class CanvasGraphics {
}
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
- if (resetLineWidthToOne) {
- ctx.save();
- ctx.moveTo(x, y);
- ctx.resetTransform();
- ctx.lineWidth = Math.floor(this._combinedScaleFactor);
- ctx.strokeText(character, 0, 0);
- ctx.restore();
- } else {
- ctx.strokeText(character, x, y);
- }
+ ctx.strokeText(character, x, y);
}
}
@@ -6434,7 +6774,7 @@ class CanvasGraphics {
get isFontSubpixelAAEnabled() {
const {
context: ctx
- } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
+ } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10, false);
ctx.scale(1.5, 1);
ctx.fillText("I", 0, 10);
const data = ctx.getImageData(0, 0, 10, 10).data;
@@ -6497,16 +6837,13 @@ class CanvasGraphics {
}
let lineWidth = current.lineWidth;
- let resetLineWidthToOne = false;
const scale = current.textMatrixScale;
if (scale === 0 || lineWidth === 0) {
const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
- this._cachedGetSinglePixelWidth = null;
lineWidth = this.getSinglePixelWidth();
- resetLineWidthToOne = lineWidth < 0;
}
} else {
lineWidth /= scale;
@@ -6566,12 +6903,12 @@ class CanvasGraphics {
if (simpleFillText && !accent) {
ctx.fillText(character, scaledX, scaledY);
} else {
- this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
+ this.paintChar(character, scaledX, scaledY, patternTransform);
if (accent) {
const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
- this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);
+ this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
}
}
}
@@ -6621,6 +6958,7 @@ class CanvasGraphics {
return;
}
+ this._cachedScaleForStroking = null;
this._cachedGetSinglePixelWidth = null;
ctx.save();
ctx.transform.apply(ctx, current.textMatrix);
@@ -6669,7 +7007,7 @@ class CanvasGraphics {
setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
this.ctx.rect(llx, lly, urx - llx, ury - lly);
- this.clip();
+ this.ctx.clip();
this.endPath();
}
@@ -6702,14 +7040,14 @@ class CanvasGraphics {
}
setStrokeRGBColor(r, g, b) {
- const color = _util.Util.makeHexColor(r, g, b);
+ const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);
this.ctx.strokeStyle = color;
this.current.strokeColor = color;
}
setFillRGBColor(r, g, b) {
- const color = _util.Util.makeHexColor(r, g, b);
+ const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b);
this.ctx.fillStyle = color;
this.current.fillColor = color;
@@ -6798,8 +7136,7 @@ class CanvasGraphics {
const width = bbox[2] - bbox[0];
const height = bbox[3] - bbox[1];
this.ctx.rect(bbox[0], bbox[1], width, height);
- this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[0], bbox[1]);
- this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[2], bbox[3]);
+ this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox);
this.clip();
this.endPath();
}
@@ -6976,18 +7313,19 @@ class CanvasGraphics {
canvas,
context
} = this.annotationCanvas;
- canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;
- canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;
+ const viewportScaleFactorStr = `var(--zoom-factor) * ${_display_utils.PixelsPerInch.PDF_TO_CSS_UNITS}`;
+ canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`;
+ canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`;
this.annotationCanvasMap.set(id, canvas);
this.annotationCanvas.savedCtx = this.ctx;
this.ctx = context;
this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);
addContextCurrentTransform(this.ctx);
- resetCtxToDefault(this.ctx);
+ resetCtxToDefault(this.ctx, this.foregroundColor);
} else {
- resetCtxToDefault(this.ctx);
+ resetCtxToDefault(this.ctx, this.foregroundColor);
this.ctx.rect(rect[0], rect[1], width, height);
- this.clip();
+ this.ctx.clip();
this.endPath();
}
}
@@ -7012,26 +7350,21 @@ class CanvasGraphics {
return;
}
+ const count = img.count;
+ img = this.getObject(img.data, img);
+ img.count = count;
const ctx = this.ctx;
- const width = img.width,
- height = img.height;
const glyph = this.processingType3;
- if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
- if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
- glyph.compiled = compileType3Glyph({
- data: img.data,
- width,
- height
- });
- } else {
- glyph.compiled = null;
+ if (glyph) {
+ if (glyph.compiled === undefined) {
+ glyph.compiled = compileType3Glyph(img);
}
- }
- if (glyph?.compiled) {
- glyph.compiled(ctx);
- return;
+ if (glyph.compiled) {
+ glyph.compiled(ctx);
+ return;
+ }
}
const mask = this._createMaskCanvas(img);
@@ -7044,17 +7377,18 @@ class CanvasGraphics {
this.compose();
}
- paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
+ paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
if (!this.contentVisible) {
return;
}
+ img = this.getObject(img.data, img);
const ctx = this.ctx;
ctx.save();
const currentTransform = ctx.mozCurrentTransform;
ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
- const mask = this._createMaskCanvas(imgData);
+ const mask = this._createMaskCanvas(img);
ctx.setTransform(1, 0, 0, 1, 0, 0);
@@ -7083,7 +7417,7 @@ class CanvasGraphics {
const image = images[i];
const width = image.width,
height = image.height;
- const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false);
const maskCtx = maskCanvas.context;
maskCtx.save();
putBinaryImageMask(maskCtx, image);
@@ -7094,7 +7428,7 @@ class CanvasGraphics {
ctx.save();
ctx.transform.apply(ctx, image.transform);
ctx.scale(1, -1);
- ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+ drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
ctx.restore();
}
@@ -7106,7 +7440,7 @@ class CanvasGraphics {
return;
}
- const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+ const imgData = this.getObject(objId);
if (!imgData) {
(0, _util.warn)("Dependent image isn't ready yet");
@@ -7121,7 +7455,7 @@ class CanvasGraphics {
return;
}
- const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+ const imgData = this.getObject(objId);
if (!imgData) {
(0, _util.warn)("Dependent image isn't ready yet");
@@ -7160,7 +7494,7 @@ class CanvasGraphics {
if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
imgToPaint = imgData;
} else {
- const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height, false);
const tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
imgToPaint = tmpCanvas.canvas;
@@ -7169,7 +7503,7 @@ class CanvasGraphics {
const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);
ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);
- ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
+ const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
if (this.imageLayer) {
const position = this.getCanvasPosition(0, -height);
@@ -7177,8 +7511,8 @@ class CanvasGraphics {
imgData,
left: position[0],
top: position[1],
- width: width / ctx.mozCurrentTransformInverse[0],
- height: height / ctx.mozCurrentTransformInverse[3]
+ width: rWidth,
+ height: rHeight
});
}
@@ -7194,7 +7528,7 @@ class CanvasGraphics {
const ctx = this.ctx;
const w = imgData.width;
const h = imgData.height;
- const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h, false);
const tmpCtx = tmpCanvas.context;
putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
@@ -7203,7 +7537,7 @@ class CanvasGraphics {
ctx.save();
ctx.transform.apply(ctx, entry.transform);
ctx.scale(1, -1);
- ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
+ drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
if (this.imageLayer) {
const position = this.getCanvasPosition(entry.x, entry.y);
@@ -7265,6 +7599,8 @@ class CanvasGraphics {
endCompat() {}
consumePath(clipBox) {
+ const isEmpty = this.current.isEmptyClip();
+
if (this.pendingClip) {
this.current.updateClipFromPath();
}
@@ -7276,10 +7612,12 @@ class CanvasGraphics {
const ctx = this.ctx;
if (this.pendingClip) {
- if (this.pendingClip === EO_CLIP) {
- ctx.clip("evenodd");
- } else {
- ctx.clip();
+ if (!isEmpty) {
+ if (this.pendingClip === EO_CLIP) {
+ ctx.clip("evenodd");
+ } else {
+ ctx.clip();
+ }
}
this.pendingClip = null;
@@ -7290,25 +7628,100 @@ class CanvasGraphics {
}
getSinglePixelWidth() {
- if (this._cachedGetSinglePixelWidth === null) {
+ if (!this._cachedGetSinglePixelWidth) {
const m = this.ctx.mozCurrentTransform;
- const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
- const sqNorm1 = m[0] ** 2 + m[2] ** 2;
- const sqNorm2 = m[1] ** 2 + m[3] ** 2;
- const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;
-
- if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
- this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
- } else if (absDet > Number.EPSILON) {
- this._cachedGetSinglePixelWidth = pixelHeight;
+
+ if (m[1] === 0 && m[2] === 0) {
+ this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));
} else {
- this._cachedGetSinglePixelWidth = 1;
+ const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+ const normX = Math.hypot(m[0], m[2]);
+ const normY = Math.hypot(m[1], m[3]);
+ this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;
}
}
return this._cachedGetSinglePixelWidth;
}
+ getScaleForStroking() {
+ if (!this._cachedScaleForStroking) {
+ const {
+ lineWidth
+ } = this.current;
+ const m = this.ctx.mozCurrentTransform;
+ let scaleX, scaleY;
+
+ if (m[1] === 0 && m[2] === 0) {
+ const normX = Math.abs(m[0]);
+ const normY = Math.abs(m[3]);
+
+ if (lineWidth === 0) {
+ scaleX = 1 / normX;
+ scaleY = 1 / normY;
+ } else {
+ const scaledXLineWidth = normX * lineWidth;
+ const scaledYLineWidth = normY * lineWidth;
+ scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;
+ scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;
+ }
+ } else {
+ const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+ const normX = Math.hypot(m[0], m[1]);
+ const normY = Math.hypot(m[2], m[3]);
+
+ if (lineWidth === 0) {
+ scaleX = normY / absDet;
+ scaleY = normX / absDet;
+ } else {
+ const baseArea = lineWidth * absDet;
+ scaleX = normY > baseArea ? normY / baseArea : 1;
+ scaleY = normX > baseArea ? normX / baseArea : 1;
+ }
+ }
+
+ this._cachedScaleForStroking = [scaleX, scaleY];
+ }
+
+ return this._cachedScaleForStroking;
+ }
+
+ rescaleAndStroke(saveRestore) {
+ const {
+ ctx
+ } = this;
+ const {
+ lineWidth
+ } = this.current;
+ const [scaleX, scaleY] = this.getScaleForStroking();
+ ctx.lineWidth = lineWidth || 1;
+
+ if (scaleX === 1 && scaleY === 1) {
+ ctx.stroke();
+ return;
+ }
+
+ let savedMatrix, savedDashes, savedDashOffset;
+
+ if (saveRestore) {
+ savedMatrix = ctx.mozCurrentTransform.slice();
+ savedDashes = ctx.getLineDash().slice();
+ savedDashOffset = ctx.lineDashOffset;
+ }
+
+ ctx.scale(scaleX, scaleY);
+ const scale = Math.max(scaleX, scaleY);
+ ctx.setLineDash(ctx.getLineDash().map(x => x / scale));
+ ctx.lineDashOffset /= scale;
+ ctx.stroke();
+
+ if (saveRestore) {
+ ctx.setTransform(...savedMatrix);
+ ctx.setLineDash(savedDashes);
+ ctx.lineDashOffset = savedDashOffset;
+ }
+ }
+
getCanvasPosition(x, y) {
const transform = this.ctx.mozCurrentTransform;
return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
@@ -7348,6 +7761,8 @@ exports.getShadingPattern = getShadingPattern;
var _util = __w_pdfjs_require__(1);
+var _is_node = __w_pdfjs_require__(3);
+
const PathType = {
FILL: "Fill",
STROKE: "Stroke",
@@ -7356,7 +7771,7 @@ const PathType = {
exports.PathType = PathType;
function applyBoundingBox(ctx, bbox) {
- if (!bbox || typeof Path2D === "undefined") {
+ if (!bbox || _is_node.isNodeJS) {
return;
}
@@ -7831,6 +8246,7 @@ class TilingPattern {
const bboxWidth = x1 - x0;
const bboxHeight = y1 - y0;
graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
+ graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [x0, y0, x1, y1]);
graphics.clip();
graphics.endPath();
}
@@ -7894,6 +8310,65 @@ exports.TilingPattern = TilingPattern;
/***/ }),
/* 12 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.applyMaskImageData = applyMaskImageData;
+
+var _util = __w_pdfjs_require__(1);
+
+function applyMaskImageData({
+ src,
+ srcPos = 0,
+ dest,
+ destPos = 0,
+ width,
+ height,
+ inverseDecode = false
+}) {
+ const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
+ const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];
+ const widthInSource = width >> 3;
+ const widthRemainder = width & 7;
+ const srcLength = src.length;
+ dest = new Uint32Array(dest.buffer);
+
+ for (let i = 0; i < height; i++) {
+ for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {
+ const elem = srcPos < srcLength ? src[srcPos] : 255;
+ dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;
+ }
+
+ if (widthRemainder === 0) {
+ continue;
+ }
+
+ const elem = srcPos < srcLength ? src[srcPos++] : 255;
+
+ for (let j = 0; j < widthRemainder; j++) {
+ dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;
+ }
+ }
+
+ return {
+ srcPos,
+ destPos
+ };
+}
+
+/***/ }),
+/* 13 */
/***/ ((__unused_webpack_module, exports) => {
@@ -7908,7 +8383,7 @@ GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ?
GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc;
/***/ }),
-/* 13 */
+/* 14 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -8394,7 +8869,7 @@ class MessageHandler {
exports.MessageHandler = MessageHandler;
/***/ }),
-/* 14 */
+/* 15 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -8439,7 +8914,7 @@ class Metadata {
exports.Metadata = Metadata;
/***/ }),
-/* 15 */
+/* 16 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -8660,7 +9135,7 @@ class OptionalContentConfig {
exports.OptionalContentConfig = OptionalContentConfig;
/***/ }),
-/* 16 */
+/* 17 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -9015,7 +9490,7 @@ class PDFDataTransportStreamRangeReader {
}
/***/ }),
-/* 17 */
+/* 18 */
/***/ ((__unused_webpack_module, exports) => {
@@ -9079,7 +9554,71 @@ class XfaText {
exports.XfaText = XfaText;
/***/ }),
-/* 18 */
+/* 19 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;
+
+var _base_factory = __w_pdfjs_require__(6);
+
+;
+
+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));
+ });
+ });
+};
+
+class NodeCanvasFactory extends _base_factory.BaseCanvasFactory {
+ _createCanvas(width, height) {
+ const Canvas = require("canvas");
+
+ return Canvas.createCanvas(width, height);
+ }
+
+}
+
+exports.NodeCanvasFactory = NodeCanvasFactory;
+
+class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url).then(data => {
+ return {
+ cMapData: data,
+ compressionType
+ };
+ });
+ }
+
+}
+
+exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
+
+class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url);
+ }
+
+}
+
+exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;
+
+/***/ }),
+/* 20 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -9093,11 +9632,11 @@ var _util = __w_pdfjs_require__(1);
var _display_utils = __w_pdfjs_require__(5);
-var _annotation_storage = __w_pdfjs_require__(9);
+var _annotation_storage = __w_pdfjs_require__(8);
-var _scripting_utils = __w_pdfjs_require__(19);
+var _scripting_utils = __w_pdfjs_require__(21);
-var _xfa_layer = __w_pdfjs_require__(20);
+var _xfa_layer = __w_pdfjs_require__(22);
const DEFAULT_TAB_INDEX = 1000;
const GetElementsByNameSet = new WeakSet();
@@ -9322,6 +9861,113 @@ class AnnotationElement {
return container;
}
+ get _commonActions() {
+ const setColor = (jsName, styleName, event) => {
+ const color = event.detail[jsName];
+ event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
+ };
+
+ return (0, _util.shadow)(this, "_commonActions", {
+ display: event => {
+ const hidden = event.detail.display % 2 === 1;
+ event.target.style.visibility = hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ hidden,
+ print: event.detail.display === 0 || event.detail.display === 3
+ });
+ },
+ print: event => {
+ this.annotationStorage.setValue(this.data.id, {
+ print: event.detail.print
+ });
+ },
+ hidden: event => {
+ event.target.style.visibility = event.detail.hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ hidden: event.detail.hidden
+ });
+ },
+ focus: event => {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+ userName: event => {
+ event.target.title = event.detail.userName;
+ },
+ readonly: event => {
+ if (event.detail.readonly) {
+ event.target.setAttribute("readonly", "");
+ } else {
+ event.target.removeAttribute("readonly");
+ }
+ },
+ required: event => {
+ if (event.detail.required) {
+ event.target.setAttribute("required", "");
+ } else {
+ event.target.removeAttribute("required");
+ }
+ },
+ bgColor: event => {
+ setColor("bgColor", "backgroundColor", event);
+ },
+ fillColor: event => {
+ setColor("fillColor", "backgroundColor", event);
+ },
+ fgColor: event => {
+ setColor("fgColor", "color", event);
+ },
+ textColor: event => {
+ setColor("textColor", "color", event);
+ },
+ borderColor: event => {
+ setColor("borderColor", "borderColor", event);
+ },
+ strokeColor: event => {
+ setColor("strokeColor", "borderColor", event);
+ }
+ });
+ }
+
+ _dispatchEventFromSandbox(actions, jsEvent) {
+ const commonActions = this._commonActions;
+
+ for (const name of Object.keys(jsEvent.detail)) {
+ const action = actions[name] || commonActions[name];
+
+ if (action) {
+ action(jsEvent);
+ }
+ }
+ }
+
+ _setDefaultPropertiesFromJS(element) {
+ if (!this.enableScripting) {
+ return;
+ }
+
+ const storedData = this.annotationStorage.getRawValue(this.data.id);
+
+ if (!storedData) {
+ return;
+ }
+
+ const commonActions = this._commonActions;
+
+ for (const [actionName, detail] of Object.entries(storedData)) {
+ const action = commonActions[actionName];
+
+ if (action) {
+ action({
+ detail,
+ target: element
+ });
+ delete storedData[actionName];
+ }
+ }
+ }
+
_createQuadrilaterals(ignoreBorder = false) {
if (!this.data.quadPoints) {
return null;
@@ -9472,11 +10118,7 @@ class LinkAnnotationElement extends AnnotationElement {
const link = document.createElement("a");
if (data.url) {
- if (!linkService.addLinkAttributes) {
- (0, _util.warn)("LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.");
- }
-
- linkService.addLinkAttributes?.(link, data.url, data.newWindow);
+ linkService.addLinkAttributes(link, data.url, data.newWindow);
} else if (data.action) {
this._bindNamedAction(link, data.action);
} else if (data.dest) {
@@ -9638,8 +10280,7 @@ class LinkAnnotationElement extends AnnotationElement {
{
const value = field.defaultValue || "";
storage.setValue(id, {
- value,
- valueAsString: value
+ value
});
break;
}
@@ -9782,83 +10423,6 @@ class WidgetAnnotationElement extends AnnotationElement {
element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]);
}
- _dispatchEventFromSandbox(actions, jsEvent) {
- const setColor = (jsName, styleName, event) => {
- const color = event.detail[jsName];
- event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
- };
-
- const commonActions = {
- display: event => {
- const hidden = event.detail.display % 2 === 1;
- event.target.style.visibility = hidden ? "hidden" : "visible";
- this.annotationStorage.setValue(this.data.id, {
- hidden,
- print: event.detail.display === 0 || event.detail.display === 3
- });
- },
- print: event => {
- this.annotationStorage.setValue(this.data.id, {
- print: event.detail.print
- });
- },
- hidden: event => {
- event.target.style.visibility = event.detail.hidden ? "hidden" : "visible";
- this.annotationStorage.setValue(this.data.id, {
- hidden: event.detail.hidden
- });
- },
- focus: event => {
- setTimeout(() => event.target.focus({
- preventScroll: false
- }), 0);
- },
- userName: event => {
- event.target.title = event.detail.userName;
- },
- readonly: event => {
- if (event.detail.readonly) {
- event.target.setAttribute("readonly", "");
- } else {
- event.target.removeAttribute("readonly");
- }
- },
- required: event => {
- if (event.detail.required) {
- event.target.setAttribute("required", "");
- } else {
- event.target.removeAttribute("required");
- }
- },
- bgColor: event => {
- setColor("bgColor", "backgroundColor", event);
- },
- fillColor: event => {
- setColor("fillColor", "backgroundColor", event);
- },
- fgColor: event => {
- setColor("fgColor", "color", event);
- },
- textColor: event => {
- setColor("textColor", "color", event);
- },
- borderColor: event => {
- setColor("borderColor", "borderColor", event);
- },
- strokeColor: event => {
- setColor("strokeColor", "borderColor", event);
- }
- };
-
- for (const name of Object.keys(jsEvent.detail)) {
- const action = actions[name] || commonActions[name];
-
- if (action) {
- action(jsEvent);
- }
- }
- }
-
}
class TextWidgetAnnotationElement extends WidgetAnnotationElement {
@@ -9891,13 +10455,13 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
if (this.renderForms) {
const storedData = storage.getValue(id, {
- value: this.data.fieldValue,
- valueAsString: this.data.fieldValue
+ value: this.data.fieldValue
});
- const textContent = storedData.valueAsString || storedData.value || "";
+ const textContent = storedData.formattedValue || storedData.value || "";
const elementData = {
userValue: null,
- formattedValue: null
+ formattedValue: null,
+ valueOnFocus: ""
};
if (this.data.multiLine) {
@@ -9922,14 +10486,18 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
this.setPropertyOnSiblings(element, "value", event.target.value, "value");
});
element.addEventListener("resetform", event => {
- const defaultValue = this.data.defaultFieldValue || "";
+ const defaultValue = this.data.defaultFieldValue ?? "";
element.value = elementData.userValue = defaultValue;
- delete elementData.formattedValue;
+ elementData.formattedValue = null;
});
let blurListener = event => {
- if (elementData.formattedValue) {
- event.target.value = elementData.formattedValue;
+ const {
+ formattedValue
+ } = elementData;
+
+ if (formattedValue !== null && formattedValue !== undefined) {
+ event.target.value = formattedValue;
}
event.target.scrollLeft = 0;
@@ -9940,38 +10508,36 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
if (elementData.userValue) {
event.target.value = elementData.userValue;
}
+
+ elementData.valueOnFocus = event.target.value;
});
element.addEventListener("updatefromsandbox", jsEvent => {
const actions = {
value(event) {
- elementData.userValue = event.detail.value || "";
+ elementData.userValue = event.detail.value ?? "";
storage.setValue(id, {
value: elementData.userValue.toString()
});
-
- if (!elementData.formattedValue) {
- event.target.value = elementData.userValue;
- }
+ event.target.value = elementData.userValue;
},
- valueAsString(event) {
- elementData.formattedValue = event.detail.valueAsString || "";
+ formattedValue(event) {
+ const {
+ formattedValue
+ } = event.detail;
+ elementData.formattedValue = formattedValue;
- if (event.target !== document.activeElement) {
- event.target.value = elementData.formattedValue;
+ if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {
+ event.target.value = formattedValue;
}
storage.setValue(id, {
- formattedValue: elementData.formattedValue
+ formattedValue
});
},
selRange(event) {
- const [selStart, selEnd] = event.detail.selRange;
-
- if (selStart >= 0 && selEnd < event.target.value.length) {
- event.target.setSelectionRange(selStart, selEnd);
- }
+ event.target.setSelectionRange(...event.detail.selRange);
}
};
@@ -9993,13 +10559,21 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
return;
}
- elementData.userValue = event.target.value;
+ const {
+ value
+ } = event.target;
+
+ if (elementData.valueOnFocus === value) {
+ return;
+ }
+
+ elementData.userValue = value;
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id,
name: "Keystroke",
- value: event.target.value,
+ value,
willCommit: true,
commitKey,
selStart: event.target.selectionStart,
@@ -10010,15 +10584,18 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
const _blurListener = blurListener;
blurListener = null;
element.addEventListener("blur", event => {
- elementData.userValue = event.target.value;
+ const {
+ value
+ } = event.target;
+ elementData.userValue = value;
- if (this._mouseState.isDown) {
+ if (this._mouseState.isDown && elementData.valueOnFocus !== value) {
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id,
name: "Keystroke",
- value: event.target.value,
+ value,
willCommit: true,
commitKey: 1,
selStart: event.target.selectionStart,
@@ -10032,7 +10609,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
if (this.data.actions?.Keystroke) {
element.addEventListener("beforeinput", event => {
- elementData.formattedValue = "";
const {
data,
target
@@ -10042,16 +10618,58 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
selectionStart,
selectionEnd
} = target;
+ let selStart = selectionStart,
+ selEnd = selectionEnd;
+
+ switch (event.inputType) {
+ case "deleteWordBackward":
+ {
+ const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/);
+
+ if (match) {
+ selStart -= match[0].length;
+ }
+
+ break;
+ }
+
+ case "deleteWordForward":
+ {
+ const match = value.substring(selectionStart).match(/^[^\w]*\w*/);
+
+ if (match) {
+ selEnd += match[0].length;
+ }
+
+ break;
+ }
+
+ case "deleteContentBackward":
+ if (selectionStart === selectionEnd) {
+ selStart -= 1;
+ }
+
+ break;
+
+ case "deleteContentForward":
+ if (selectionStart === selectionEnd) {
+ selEnd += 1;
+ }
+
+ break;
+ }
+
+ event.preventDefault();
this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
source: this,
detail: {
id,
name: "Keystroke",
value,
- change: data,
+ change: data || "",
willCommit: false,
- selStart: selectionStart,
- selEnd: selectionEnd
+ selStart,
+ selEnd
}
});
});
@@ -10085,6 +10703,8 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+
this.container.appendChild(element);
return this.container;
}
@@ -10193,6 +10813,8 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+
this.container.appendChild(element);
return this.container;
}
@@ -10284,6 +10906,8 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+
this.container.appendChild(element);
return this.container;
}
@@ -10305,6 +10929,8 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
container.title = this.data.alternativeText;
}
+ this._setDefaultPropertiesFromJS(container);
+
return container;
}
@@ -10321,8 +10947,8 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
this.container.className = "choiceWidgetAnnotation";
const storage = this.annotationStorage;
const id = this.data.id;
- storage.getValue(id, {
- value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
+ const storedData = storage.getValue(id, {
+ value: this.data.fieldValue
});
let {
fontSize
@@ -10366,7 +10992,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
optionElement.style.fontSize = fontSizeStyle;
}
- if (this.data.fieldValue.includes(option.exportValue)) {
+ if (storedData.value.includes(option.exportValue)) {
optionElement.setAttribute("selected", true);
}
@@ -10535,13 +11161,15 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
} else {
selectElement.addEventListener("input", function (event) {
storage.setValue(id, {
- value: getValue(event)
+ value: getValue(event, true)
});
});
}
this._setBackgroundColor(selectElement);
+ this._setDefaultPropertiesFromJS(selectElement);
+
this.container.appendChild(selectElement);
return this.container;
}
@@ -11108,7 +11736,6 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
this.content = content;
this.linkService.eventBus?.dispatch("fileattachmentannotation", {
source: this,
- id: (0, _util.stringToPDFString)(filename),
filename,
content
});
@@ -11291,7 +11918,7 @@ class AnnotationLayer {
exports.AnnotationLayer = AnnotationLayer;
/***/ }),
-/* 19 */
+/* 21 */
/***/ ((__unused_webpack_module, exports) => {
@@ -11359,7 +11986,7 @@ class ColorConverters {
exports.ColorConverters = ColorConverters;
/***/ }),
-/* 20 */
+/* 22 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -11369,9 +11996,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XfaLayer = void 0;
-var _util = __w_pdfjs_require__(1);
-
-var _xfa_text = __w_pdfjs_require__(17);
+var _xfa_text = __w_pdfjs_require__(18);
class XfaLayer {
static setupStorage(html, id, element, storage, intent) {
@@ -11492,11 +12117,7 @@ class XfaLayer {
}
if (isHTMLAnchorElement) {
- if (!linkService.addLinkAttributes) {
- (0, _util.warn)("XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.");
- }
-
- linkService.addLinkAttributes?.(html, attributes.href, attributes.newWindow);
+ linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);
}
if (storage && attributes.dataId) {
@@ -11613,7 +12234,7 @@ class XfaLayer {
exports.XfaLayer = XfaLayer;
/***/ }),
-/* 21 */
+/* 23 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -12257,7 +12878,6 @@ class TextLayerRenderTask {
const canvas = this._document.createElement("canvas");
canvas.height = canvas.width = DEFAULT_FONT_SIZE;
- canvas.mozOpaque = true;
this._layoutTextCtx = canvas.getContext("2d", {
alpha: false
});
@@ -12395,7 +13015,7 @@ function renderTextLayer(renderParameters) {
}
/***/ }),
-/* 22 */
+/* 24 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -13950,7 +14570,7 @@ exports.SVGGraphics = SVGGraphics;
}
/***/ }),
-/* 23 */
+/* 25 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -13962,7 +14582,7 @@ exports.PDFNodeStream = void 0;
var _util = __w_pdfjs_require__(1);
-var _network_utils = __w_pdfjs_require__(24);
+var _network_utils = __w_pdfjs_require__(26);
;
@@ -14416,7 +15036,7 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader {
}
/***/ }),
-/* 24 */
+/* 26 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -14431,7 +15051,7 @@ exports.validateResponseStatus = validateResponseStatus;
var _util = __w_pdfjs_require__(1);
-var _content_disposition = __w_pdfjs_require__(25);
+var _content_disposition = __w_pdfjs_require__(27);
var _display_utils = __w_pdfjs_require__(5);
@@ -14441,7 +15061,6 @@ function validateRangeRequestCapabilities({
rangeChunkSize,
disableRange
}) {
- (0, _util.assert)(rangeChunkSize > 0, "Range chunk size must be larger than zero");
const returnValues = {
allowRangeRequests: false,
suggestedLength: undefined
@@ -14509,7 +15128,7 @@ function validateResponseStatus(status) {
}
/***/ }),
-/* 25 */
+/* 27 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -14689,7 +15308,7 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
}
/***/ }),
-/* 26 */
+/* 28 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -14701,7 +15320,7 @@ exports.PDFNetworkStream = void 0;
var _util = __w_pdfjs_require__(1);
-var _network_utils = __w_pdfjs_require__(24);
+var _network_utils = __w_pdfjs_require__(26);
;
const OK_RESPONSE = 200;
@@ -15230,7 +15849,7 @@ class PDFNetworkStreamRangeRequestReader {
}
/***/ }),
-/* 27 */
+/* 29 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -15242,7 +15861,7 @@ exports.PDFFetchStream = void 0;
var _util = __w_pdfjs_require__(1);
-var _network_utils = __w_pdfjs_require__(24);
+var _network_utils = __w_pdfjs_require__(26);
;
@@ -15756,25 +16375,25 @@ var _api = __w_pdfjs_require__(4);
var _display_utils = __w_pdfjs_require__(5);
-var _annotation_layer = __w_pdfjs_require__(18);
+var _annotation_layer = __w_pdfjs_require__(20);
-var _worker_options = __w_pdfjs_require__(12);
+var _worker_options = __w_pdfjs_require__(13);
var _is_node = __w_pdfjs_require__(3);
-var _text_layer = __w_pdfjs_require__(21);
+var _text_layer = __w_pdfjs_require__(23);
-var _svg = __w_pdfjs_require__(22);
+var _svg = __w_pdfjs_require__(24);
-var _xfa_layer = __w_pdfjs_require__(20);
+var _xfa_layer = __w_pdfjs_require__(22);
-const pdfjsVersion = '2.13.216';
-const pdfjsBuild = '399a0ec60';
+const pdfjsVersion = '2.14.305';
+const pdfjsBuild = 'eaaa8b4ad';
{
if (_is_node.isNodeJS) {
const {
PDFNodeStream
- } = __w_pdfjs_require__(23);
+ } = __w_pdfjs_require__(25);
(0, _api.setPDFNetworkStreamFactory)(params => {
return new PDFNodeStream(params);
@@ -15782,11 +16401,11 @@ const pdfjsBuild = '399a0ec60';
} else {
const {
PDFNetworkStream
- } = __w_pdfjs_require__(26);
+ } = __w_pdfjs_require__(28);
const {
PDFFetchStream
- } = __w_pdfjs_require__(27);
+ } = __w_pdfjs_require__(29);
(0, _api.setPDFNetworkStreamFactory)(params => {
if ((0, _display_utils.isValidFetchUrl)(params.url)) {
diff --git a/js/pdfjs/build/pdf.js.map b/js/pdfjs/build/pdf.js.map
index 6d9108a..faa1a25 100644
--- a/js/pdfjs/build/pdf.js.map
+++ b/js/pdfjs/build/pdf.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(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\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static get idCounters() {\n return shadow(this, \"idCounters\", { doc: 0 });\n }\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object<string, boolean>} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object<string, boolean>} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<TypedArray>} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL\") ||\n transfers\n ? structuredClone(obj, transfers)\n : structuredClone(obj),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static get _workerPorts() {\n return shadow(this, \"_workerPorts\", new WeakMap());\n }\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker._workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker._workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([255]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n warn(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker._workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this._workerPorts.has(params.port)) {\n return this._workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const worker = await import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n PDFWorker.getWorkerSrc = function () {\n deprecated(\n \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n );\n return this.workerSrc;\n };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #docStats = null;\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl,\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let lastModified = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n lastModified = this.annotationStorage.lastModified;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${lastModified}`,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n // modify this internal data.\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes),\n });\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.CMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.CMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.StandardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.ownerDocument,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n saveDocument() {\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return (this._getFieldObjectsPromise ||=\n this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n\n hasJSActions() {\n return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n \"HasJSActions\",\n null\n ));\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return (this.#metadataPromise ||= this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n }));\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return (this.#objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static get canvasInUse() {\n return shadow(this, \"canvasInUse\", new WeakSet());\n }\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, imageLayer, background } =\n this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n imageLayer,\n optionalContentConfig,\n this.annotationCanvasMap\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport { BaseException, stringToBytes, Util, warn } from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @private\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @private\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @private\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n IsEvalSupportedCached,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n // For testing only.\n styleElement = null,\n }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n\n this.nativeFontFaces = [];\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? styleElement\n : null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m?.[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n });\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nlet NodeCanvasFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCanvasFactory\");\n }\n};\n\nlet NodeCMapReaderFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCMapReaderFactory\");\n }\n};\n\nlet NodeStandardFontDataFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeStandardFontDataFactory\");\n }\n};\n\nif ((typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS) {\n const fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n };\n\n NodeCanvasFactory = class extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n };\n\n NodeCMapReaderFactory = class extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n };\n\n NodeStandardFontDataFactory = class extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n };\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._timeStamp = Date.now();\n this._modified = false;\n\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Set the value for a given key\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this._storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this._storage.set(key, value);\n }\n if (modified) {\n this._timeStamp = Date.now();\n this._setModified();\n }\n }\n\n getAll() {\n return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n /**\n * @private\n */\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this._storage.size > 0 ? this._storage : null;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get lastModified() {\n return this._timeStamp.toString();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n IsLittleEndianCached,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { PixelsPerInch } from \"./display_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and shedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Because of https://bugs.chromium.org/p/chromium/issues/detail?id=1170396\n// some curves aren't rendered correctly.\n// Multiplying lineWidth by this factor should help to have \"correct\"\n// rendering with no artifacts.\n// Once the bug is fixed upstream, we can remove this constant and its use.\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n if (ctx._transformStack) {\n // Reset the transform stack.\n ctx._transformStack = [];\n }\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (ctx.mozCurrentTransform) {\n return;\n }\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n // The call to getOwnPropertyDescriptor throws an exception in Node.js:\n // \"TypeError: Method lineWidth called on incompatible receiver\n // #<CanvasRenderingContext2D>\".\n const desc = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(ctx),\n \"lineWidth\"\n );\n\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n },\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n if (this._transformStack.length === 0) {\n warn(\"Tried to restore a ctx when the stack was already empty.\");\n }\n const prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction compileType3Glyph(imgData) {\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width = imgData.width,\n height = imgData.height,\n width1 = width + 1;\n let i, ii, j, j0;\n const points = new Uint8Array(width1 * (height + 1));\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7,\n data0 = imgData.data;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (i = 0, ii = data0.length; i < ii; i++) {\n const elem = data0[i];\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const outlines = [];\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n const coords = [p % width1, i];\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n coords.push(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n const o = outlines[k];\n c.moveTo(o[0], o[1]);\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n this.updatePathMinMax(transform, box[0], box[1]);\n this.updatePathMinMax(transform, box[2], box[3]);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n let white = 0xffffffff;\n let black = IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n let destPos = 3; // alpha component offset\n for (let j = 0; j < thisChunkHeight; j++) {\n let elem,\n mask = 0;\n for (let k = 0; k < width; k++) {\n if (!mask) {\n elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n imageLayer,\n optionalContentConfig,\n annotationCanvasMap\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n this._combinedScaleFactor = Math.hypot(\n this.baseTransform[0],\n this.baseTransform[2]\n );\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n putBinaryImageMask(maskCtx, img);\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n const objToCanvas = ctx.mozCurrentTransform;\n let maskToCanvas = Util.transform(objToCanvas, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.ceil(rect[2] - rect[0]);\n const drawnHeight = Math.ceil(rect[3] - rect[1]);\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n true\n );\n const fillCtx = fillCanvas.context;\n // The offset will be the top-left cordinate mask.\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n // Pre-scale if needed to improve image smoothing.\n const scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n fillCtx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.img.width,\n scaled.img.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(fillCtx.mozCurrentTransformInverse, [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const lineWidth = this.getSinglePixelWidth();\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n ctx.restore();\n } else {\n const lineWidth = this.getSinglePixelWidth();\n if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {\n // The current transform will transform a square pixel into a\n // parallelogram where both heights are lower than 1 and not equal.\n ctx.save();\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n ctx.stroke();\n ctx.restore();\n } else {\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n }\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform, resetLineWidthToOne) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n }\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.save();\n ctx.moveTo(x, y);\n ctx.resetTransform();\n ctx.lineWidth = Math.floor(this._combinedScaleFactor);\n ctx.strokeText(character, 0, 0);\n ctx.restore();\n } else {\n ctx.strokeText(character, x, y);\n }\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n let resetLineWidthToOne = false;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth();\n resetLineWidthToOne = lineWidth < 0;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(\n character,\n scaledX,\n scaledY,\n patternTransform,\n resetLineWidthToOne\n );\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform,\n resetLineWidthToOne\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.SHADING\n );\n\n const inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[0],\n bbox[1]\n );\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[2],\n bbox[3]\n );\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n\n endAnnotations() {\n this.restore();\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n this.ctx.mozCurrentTransform\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;\n canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.restore();\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n\n const glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({ data: img.data, width, height });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph?.compiled) {\n glyph.compiled(ctx);\n return;\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n imgData,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(imgData);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (let i = 0, ii = images.length; i < ii; i++) {\n const image = images[i];\n const width = image.width,\n height = image.height;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n ctx.mozCurrentTransform,\n imgData.interpolate\n );\n ctx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / ctx.mozCurrentTransformInverse[0],\n height: height / ctx.mozCurrentTransformInverse[3],\n });\n }\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (this._cachedGetSinglePixelWidth === null) {\n // If transform is [a b] then a pixel (square) is transformed\n // [c d]\n // into a parallelogram: its area is the abs value of the determinant.\n // This parallelogram has 2 heights:\n // - Area / |col_1|;\n // - Area / |col_2|.\n // so in order to get a height of at least 1, pixel height\n // must be computed as followed:\n // h = max(sqrt(a² + c²) / |det(M)|, sqrt(b² + d²) / |det(M)|).\n // This is equivalent to:\n // h = max(|line_1_inv(M)|, |line_2_inv(M)|)\n const m = this.ctx.mozCurrentTransform;\n\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const sqNorm1 = m[0] ** 2 + m[2] ** 2;\n const sqNorm2 = m[1] ** 2 + m[3] ** 2;\n const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;\n if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {\n // The parallelogram isn't a square and at least one height\n // is lower than 1 so the resulting line width must be 1\n // but it cannot be achieved with one scale: when scaling a pixel\n // we'll get a rectangle (see issue #12295).\n // For example with matrix [0.001 0, 0, 100], a pixel is transformed\n // in a rectangle 0.001x100. If we just scale by 1000 (to have a 1)\n // then we'll get a rectangle 1x1e5 which is wrong.\n // In this case, we must reset the transform, set linewidth to 1\n // and then stroke.\n this._cachedGetSinglePixelWidth = -(\n this._combinedScaleFactor * pixelHeight\n );\n } else if (absDet > Number.EPSILON) {\n this._cachedGetSinglePixelWidth = pixelHeight;\n } else {\n // Matrix is non-invertible.\n this._cachedGetSinglePixelWidth = 1;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n ctx.mozCurrentTransform\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static get MAX_PATTERN_SIZE() {\n return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 cordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { objectFromMap, warn } from \"../shared/util.js\";\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n for (const group of data.groups) {\n this._groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n _evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n if (this._order) {\n return this._order.slice();\n }\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n return this._groups.size > 0 ? objectFromMap(this._groups) : null;\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename =\n params.contentDispositionFilename || null;\n\n const initialData = params.initialData;\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader?.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader?.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n shadow,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let { width, height } = getRectDims(data.rect);\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (data.hasOwnCanvas) {\n const transform = viewport.transform.slice();\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(transform);\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n // Reset the scale part of the transform matrix (which must be diagonal\n // or anti-diagonal) in order to avoid to rescale the canvas.\n // The canvas for the annotation is correctly scaled when it is drawn\n // (see `beginAnnotation` in canvas.js).\n for (let i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n container.style.transform = `matrix(${transform.join(\",\")})`;\n } else {\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n }\n\n container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || data.color || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n }\n return container;\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _renderQuadrilaterals(className) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement|Array<HTMLSectionElement>}\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.getElementById(id);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { id, exportValue } = domElement;\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n return shadow(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\"),\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action ||\n parameters.data.isTooltipOnly ||\n parameters.data.resetForm ||\n (parameters.data.actions &&\n (parameters.data.actions.Action ||\n parameters.data.actions[\"Mouse Up\"] ||\n parameters.data.actions[\"Mouse Down\"]))\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n let hasClickAction = false;\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n hasClickAction = true;\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value, valueAsString: value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.getElementById(id);\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = AnnotationElement.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n const commonActions = {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n event.target.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n };\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n valueAsString: this.data.fieldValue,\n });\n const textContent = storedData.valueAsString || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue || \"\";\n element.value = elementData.userValue = defaultValue;\n delete elementData.formattedValue;\n });\n\n let blurListener = event => {\n if (elementData.formattedValue) {\n event.target.value = elementData.formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value || \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n if (!elementData.formattedValue) {\n event.target.value = elementData.userValue;\n }\n },\n valueAsString(event) {\n elementData.formattedValue = event.detail.valueAsString || \"\";\n if (event.target !== document.activeElement) {\n // Input hasn't the focus so display formatted string\n event.target.value = elementData.formattedValue;\n }\n storage.setValue(id, {\n formattedValue: elementData.formattedValue,\n });\n },\n selRange(event) {\n const [selStart, selEnd] = event.detail.selRange;\n if (selStart >= 0 && selEnd < event.target.value.length) {\n event.target.setSelectionRange(selStart, selEnd);\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n // if the key is one of Escape, Enter or Tab\n // then the data are committed\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n // Save the entered value\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n elementData.userValue = event.target.value;\n if (this._mouseState.isDown) {\n // Focus out using the mouse: data are committed\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.formattedValue = \"\";\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data,\n willCommit: false,\n selStart: selectionStart,\n selEnd: selectionEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontSize, fontColor } = this.data.defaultAppearanceData;\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n if (fontSize) {\n style.fontSize = `${fontSize}px`;\n }\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n // For printing/saving we currently only support choice widgets with one\n // option selection. Therefore, listboxes (#12189) and comboboxes (#12224)\n // are not properly printed/saved yet, so we only store the first item in\n // the field value array instead of the entire array. Once support for those\n // two field types is implemented, we should use the same pattern as the\n // other interactive widgets where the return value of `getValue`\n // is used and the full array of field values is stored.\n storage.getValue(id, {\n value:\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined,\n });\n\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n fontSize = 9;\n }\n const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n selectElement.style.fontSize = `${fontSize}px`;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n if (!event.target.multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(\n optionElement,\n selectElement.children[index]\n );\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, /* isExport */ true);\n const value = getValue(event, /* isExport */ false);\n storage.setValue(id, { value: exportValue });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n ],\n event => event.target.checked\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(event) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n this.container.style.left = `${popupLeft}px`;\n this.container.style.top = `${popupTop}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n const div = parameters.div;\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage:\n parameters.annotationStorage || new AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || { isDown: false },\n });\n if (element.isRenderable) {\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.appendChild(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n const { page, viewport, annotations, annotationCanvasMap, div } =\n parameters;\n const transform = viewport.transform;\n const matrix = `matrix(${transform.join(\",\")})`;\n\n let scale, ownMatrix;\n for (const data of annotations) {\n const elements = div.querySelectorAll(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (elements) {\n for (const element of elements) {\n if (data.hasOwnCanvas) {\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ownMatrix) {\n // When an annotation has its own canvas, then\n // the scale has been already applied to the canvas,\n // so we musn't scale it twice.\n scale = Math.abs(transform[0] || transform[1]);\n const ownTransform = transform.slice();\n for (let i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n }\n\n const left = rect[0] * scale;\n const top = rect[1] * scale;\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.transformOrigin = `${-left}px ${-top}px`;\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\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 [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\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\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { warn } from \"../shared/util.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue; // Handled below.\n }\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure overwrite\n // any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack[stack.length - 1];\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack[stack.length - 1][1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.appendChild(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n * render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n * viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that are correspond\n * to the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection\n ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n }\n : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n };\n\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._viewport.transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (\n geom.str.length > 1 ||\n (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n ) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n const divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n\n let m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n const divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = Util.applyTransform(points[j], m);\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n\n const expanded = new Array(boxes.length);\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n }\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n const horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n for (const boundary of bounds) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n let i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n let j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n const changedHorizon = [];\n let lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n const useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n let used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n }\n\n // Set new x2 for all unset boundaries.\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (!this._enhanceTextSelection) {\n // The `textDiv` properties are no longer needed.\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (\n items[i].type === \"beginMarkedContentProps\" ||\n items[i].type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = textDivProperties.canvasWidth / width;\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n transform = `scaleX(${scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.appendChild(br);\n }\n }\n\n /**\n * @private\n */\n _render(timeout = 0) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = this._document.createElement(\"canvas\");\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n /**\n * @param {boolean} [expandDivs]\n */\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n}\n\nexport { renderTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n ) {\n if (\n URL.createObjectURL &&\n typeof Blob !== \"undefined\" &&\n !forceDataSchema\n ) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n assert(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n AnnotationMode,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n setPDFNetworkStreamFactory,\n version,\n} from \"./display/api.js\";\nimport {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"pdfjs/display/network.js\"),\n import(\"pdfjs/display/fetch_stream.js\"),\n ]);\n\n setPDFNetworkStreamFactory(async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const { PDFNetworkStream } = require(\"./display/network.js\");\n const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n}\n\nexport {\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n LoopbackPort,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderTextLayer,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","e","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","shadow","obj","prop","value","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","arrayByteLength","arr","byteLength","arraysToBytes","resultLength","pos","data","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","isEvalSupported","Function","IsEvalSupportedCached","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","compare","orderedX","sort","orderedY","result","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","createPromiseCapability","capability","isSettled","get","promise","Promise","resolve","reject","reason","isNodeJS","process","versions","nw","electron","type","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","NodeCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","NodeCMapReaderFactory","DOMCMapReaderFactory","DefaultStandardFontDataFactory","NodeStandardFontDataFactory","DOMStandardFontDataFactory","createPDFNetworkStream","setPDFNetworkStreamFactory","pdfNetworkStreamFactory","getDocument","src","task","PDFDocumentLoadingTask","source","PDFDataRangeTransport","range","params","rangeTransport","worker","window","location","href","Buffer","isNaN","rangeChunkSize","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","docBaseUrl","isDataScheme","maxImageSize","useWorkerFetch","disableFontFace","useSystemFonts","ownerDocument","globalThis","document","disableRange","disableStream","disableAutoFetch","workerParams","port","GlobalWorkerOptions","workerPort","PDFWorker","fromPort","_worker","docId","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","cMapUrl","standardFontDataUrl","idCounters","doc","onPassword","onProgress","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","deprecated","fingerprints","stats","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","saveDocument","size","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","cacheKey","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","arguments","renderInteractiveForms","includeAnnotationStorage","time","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","Set","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_structTreePromise","_destroy","waitOn","values","force","completed","cancel","clear","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","serializable","streamReader","RenderingCancelledException","setTimeout","curCacheKey","curIntentState","LoopbackPort","_listeners","_deferred","postMessage","transfers","event","structuredClone","call","addEventListener","removeEventListener","indexOf","splice","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","createCDNWrapper","wrapper","createObjectURL","Blob","_workerPorts","WeakMap","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","getWorkerSrc","docStats","pageCache","pagePromises","metadataPromise","fontLoader","FontLoader","_onUnsupportedFeature","bind","styleElement","_params","isCompressed","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","lastModified","page","hasOwnProperty","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","evt","onPull","close","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","enabled","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","freeze","fetch","featureId","cachedPromise","num","gen","filename","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","settled","RenderTask","_internalRenderTask","onContinue","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","canvas","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","SVG_NS","PixelsPerInch","CSS","PDF","PDF_TO_CSS_UNITS","BaseCanvasFactory","_document","_createCanvas","width","height","createElement","fetchData","asTypedArray","isValidFetchUrl","baseURI","response","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","createElementNS","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","convertToViewportPoint","x","y","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","getFilenameFromUrl","anchor","query","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","includes","started","times","now","start","outBuf","longest","duration","padEnd","removeScriptElement","script","onload","remove","onerror","head","documentElement","appendChild","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","style","context","getContext","reset","canvasAndContext","svg","setAttribute","BaseFontLoader","nativeFontFaces","addNativeFontFace","nativeFontFace","fonts","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","rules","fontsToLoad","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","navigator","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","names","loadedName","div","visibility","position","top","left","span","fontFamily","body","translatedData","compiledGlyphs","cssFontInfo","FontFace","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","args","cmd","fs","readFile","Canvas","createCanvas","_storage","_timeStamp","_modified","onSetModified","onResetModified","getValue","defaultValue","setValue","modified","entry","val","entries","_setModified","getAll","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","translate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","f","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","addContextCurrentTransform","_transformStack","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","_originalResetTransform","_transformMatrix","desc","getOwnPropertyDescriptor","getPrototypeOf","_setLineWidth","_getLineWidth","getLineWidth","_","getCurrentTransform","getCurrentTransformInverse","ad_bc","bc_ad","old","prev","pop","cosValue","cos","sinValue","sin","CachedCanvases","cache","getCanvas","trackTransform","canvasEntry","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","points","lineSize","data0","elem","mask","count","sum","steps","Int32Array","outlines","coords","p0","step","pp","drawOutline","k","kk","o","l","ll","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","layerBox","layerWidth","layerHeight","drawImage","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedGetSinglePixelWidth","fillRect","transparentCanvas","compositeCtx","_combinedScaleFactor","hypot","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","inSMaskMode","endLayout","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","maskCanvas","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","round","limit","dashArray","dashPhase","flatness","states","state","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","floor","ops","startX","startY","xw","yh","consumePath","getSinglePixelWidth","needRestore","paths","pendingTextPaths","path","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","mode","rise","paintChar","patternTransform","resetLineWidthToOne","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","isArray","group","currentCtx","isolated","knockout","currentTransform","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","skewX","skewY","positions","trans","images","image","w","h","imgToPaint","HTMLElement","getCanvasPosition","appendImage","tag","visible","isVisible","isContentVisible","absDet","sqNorm1","sqNorm2","pixelHeight","EPSILON","op","applyBoundingBox","Path2D","region","BaseShadingPattern","RadialAxialShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","colors","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","_processStreamMessage","action","cbSourceName","cbTargetName","_createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","self","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","allSettled","metadataMap","parsedData","rawData","getRaw","OptionalContentGroup","creator","_order","_groups","order","groups","baseState","off","_evaluateVisibilityExpression","array","operator","element","expression","policy","ids","setVisibility","getOrder","from","getGroups","getGroup","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","some","_begin","_progressiveDataLength","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","output","walk","node","shouldBuildText","child","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","container","_createContainer","quadrilaterals","_createQuadrilaterals","sign","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","quadPoints","savedRect","quadPoint","_createPopup","trigger","popupElement","PopupElement","modificationDate","richText","hideWrapper","popup","_renderQuadrilaterals","className","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementById","getElementsByName","platform","isWin","isMac","isTooltipOnly","resetForm","actions","Action","link","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","hasClickAction","_bindJSAction","_bindResetFormAction","index","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","jsName","eventBus","dispatch","detail","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","valueAsString","dispatchEvent","Event","hasPopup","alt","dataset","l10nId","l10nArgs","JSON","stringify","alternativeText","title","_getKeyModifier","ctrlKey","metaKey","_setEventListener","baseName","eventName","valueGetter","shiftKey","modifier","_setEventListeners","getter","_setBackgroundColor","_dispatchEventFromSandbox","jsEvent","setColor","styleName","target","ColorConverters","commonActions","display","hidden","print","focus","preventScroll","userName","readonly","removeAttribute","required","bgColor","fgColor","textColor","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","storedData","elementData","userValue","formattedValue","multiLine","disabled","readOnly","tabIndex","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","selStart","selEnd","setSelectionRange","commitKey","willCommit","selectionStart","selectionEnd","_blurListener","isDown","Keystroke","change","maxLen","maxLength","comb","fieldWidth","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","textAlignment","textAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","fontSizeStyle","selectElement","combo","multiSelect","multiple","option","selected","optionElement","displayValue","isExport","selectedIndex","filter","getItems","multipleSelection","findIndex","insertBefore","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","selector","parentId","parentElements","querySelectorAll","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","hideElement","dir","dateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","html","lastChild","contents","_formatContents","_toggle","_show","_hide","lines","split","line","createTextNode","pin","zIndex","unpin","lineCoordinates","append","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","content","file","_download","openOrDownloadData","AnnotationLayer","sortedAnnotations","popupAnnotations","rendered","renderedElement","prepend","setAnnotationCanvasMap","update","ownMatrix","elements","ownTransform","querySelector","firstChild","nodeName","replaceChild","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","getAttribute","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","textDivs","parent","childHtml","xmlns","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","tx","_viewport","atan2","fontName","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","jj","boxScale","boxes","x1New","x2New","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","concat","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_processItems","styleCache","len","parentNode","_render","timeout","mozOpaque","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","padding","renderTextLayer","renderParameters","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","host","PDFNodeStream","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","NetworkManager_getXhr","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","pdfjsVersion","pdfjsBuild","require"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(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\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object<string, boolean>} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object<string, boolean>} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<TypedArray>} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const worker = await import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n PDFWorker.getWorkerSrc = function () {\n deprecated(\n \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n );\n return this.workerSrc;\n };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #docStats = null;\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl,\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let annotationHash = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n annotationHash = this.annotationStorage.hash;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationHash}`,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const { bitmap, width, height } = imageData;\n length = width * height * 4;\n pageProxy._bitmaps.add(bitmap);\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n // modify this internal data.\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes),\n });\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.CMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.CMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.StandardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.ownerDocument,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n saveDocument() {\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return (this._getFieldObjectsPromise ||=\n this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n\n hasJSActions() {\n return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n \"HasJSActions\",\n null\n ));\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return (this.#metadataPromise ||= this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n }));\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return (this.#objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, imageLayer, background } =\n this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n imageLayer,\n optionalContentConfig,\n this.annotationCanvasMap,\n this.pageColors\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n PDFWorkerUtil,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport { BaseException, stringToBytes, Util, warn } from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @ignore\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FeatureTest,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n // For testing only.\n styleElement = null,\n }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n\n this.nativeFontFaces = [];\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? styleElement\n : null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m?.[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n });\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\nimport { objectFromMap } from \"../shared/util.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._modified = false;\n\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this._storage.get(key);\n }\n\n /**\n * Set the value for a given key\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this._storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this._storage.set(key, value);\n }\n if (modified) {\n this._setModified();\n }\n }\n\n getAll() {\n return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n /**\n * @private\n */\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this._storage.size > 0 ? this._storage : null;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get hash() {\n const hash = new MurmurHash3_64();\n\n for (const [key, value] of this._storage) {\n hash.update(`${key}:${JSON.stringify(value)}`);\n }\n return hash.hexdigest();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { applyMaskImageData } from \"../shared/image_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { PixelsPerInch } from \"./display_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Because of https://bugs.chromium.org/p/chromium/issues/detail?id=1170396\n// some curves aren't rendered correctly.\n// Multiplying lineWidth by this factor should help to have \"correct\"\n// rendering with no artifacts.\n// Once the bug is fixed upstream, we can remove this constant and its use.\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n if (ctx._transformStack) {\n // Reset the transform stack.\n ctx._transformStack = [];\n }\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (ctx.mozCurrentTransform) {\n return;\n }\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n // The call to getOwnPropertyDescriptor throws an exception in Node.js:\n // \"TypeError: Method lineWidth called on incompatible receiver\n // #<CanvasRenderingContext2D>\".\n const desc = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(ctx),\n \"lineWidth\"\n );\n\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n },\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n if (this._transformStack.length === 0) {\n warn(\"Tried to restore a ctx when the stack was already empty.\");\n }\n const prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n }\n\n delete(id) {\n delete this.cache[id];\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform;\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (\n !COMPILE_TYPE3_GLYPHS ||\n width > MAX_SIZE_TO_COMPILE ||\n height > MAX_SIZE_TO_COMPILE\n ) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n let path, outlines, coords;\n if (!isNodeJS) {\n path = new Path2D();\n } else {\n outlines = [];\n }\n\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n\n if (path) {\n path.moveTo(p % width1, i);\n } else {\n coords = [p % width1, i];\n }\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n if (path) {\n path.lineTo(p % width1, (p / width1) | 0);\n } else {\n coords.push(p % width1, (p / width1) | 0);\n }\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n if (!path) {\n outlines.push(coords);\n }\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n if (path) {\n c.fill(path);\n } else {\n c.beginPath();\n for (const o of outlines) {\n c.moveTo(o[0], o[1]);\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n c.fill();\n }\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n let white = 0xffffffff;\n let black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n\n ({ srcPos } = applyMaskImageData({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n }));\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx, foregroundColor) {\n ctx.strokeStyle = ctx.fillStyle = foregroundColor || \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n imageLayer,\n optionalContentConfig,\n annotationCanvasMap,\n pageColors\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.backgroundColor = pageColors?.background || null;\n this.foregroundColor = pageColors?.foreground || null;\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const defaultBackgroundColor = background || \"#ffffff\";\n this.ctx.save();\n\n if (this.foregroundColor && this.backgroundColor) {\n // Get the #RRGGBB value of the color. If it's a name (e.g. CanvasText)\n // then it'll be converted to its rgb value.\n this.ctx.fillStyle = this.foregroundColor;\n const fg = (this.foregroundColor = this.ctx.fillStyle);\n this.ctx.fillStyle = this.backgroundColor;\n const bg = (this.backgroundColor = this.ctx.fillStyle);\n let isValidDefaultBg = true;\n let defaultBg = defaultBackgroundColor;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.ctx.fillStyle = defaultBackgroundColor;\n defaultBg = this.ctx.fillStyle;\n isValidDefaultBg =\n typeof defaultBg === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);\n }\n\n if (\n (fg === \"#000000\" && bg === \"#ffffff\") ||\n fg === bg ||\n !isValidDefaultBg\n ) {\n // Ignore the `pageColors`-option when:\n // - The computed background/foreground colors have their default\n // values, i.e. white/black.\n // - The computed background/foreground colors are identical,\n // since that'd render the `canvas` mostly blank.\n // - The `background`-option has a value that's incompatible with\n // the `pageColors`-values.\n //\n this.foregroundColor = this.backgroundColor = null;\n } else {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\n const cB = parseInt(defaultBg.slice(1), 16);\n const rB = (cB && 0xff0000) >> 16;\n const gB = (cB && 0x00ff00) >> 8;\n const bB = cB && 0x0000ff;\n const newComp = x => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n };\n const lumB = Math.round(\n 0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)\n );\n this.selectColor = (r, g, b) => {\n const lumC =\n 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);\n return Math.round(lumC) === lumB ? bg : fg;\n };\n }\n }\n\n this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n /* trackTransform */ true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx, this.foregroundColor);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight,\n /* trackTransform */ false\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const { width, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = ctx.mozCurrentTransform;\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets.\n // TODO: handle the case of a pattern fill if it's possible.\n const withoutTranslation = currentTransform.slice(0, 4);\n cacheKey = JSON.stringify(\n isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]\n );\n\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height,\n /* trackTransform */ false\n );\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n\n let maskToCanvas = Util.transform(currentTransform, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n /* trackTransform */ true\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(fillCtx.mozCurrentTransformInverse, [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking = null;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n /* trackTransform */ true\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = ctx.mozCurrentTransform;\n\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10,\n /* trackTransform */ false\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = this.selectColor?.(r, g, b) || Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.SHADING\n );\n\n const inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox);\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n /* trackTransform */ true\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n\n endAnnotations() {\n this.restore();\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n this.ctx.mozCurrentTransform\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n const viewportScaleFactorStr = `var(--zoom-factor) * ${PixelsPerInch.PDF_TO_CSS_UNITS}`;\n canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`;\n canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n\n resetCtxToDefault(this.ctx, this.foregroundColor);\n } else {\n resetCtxToDefault(this.ctx, this.foregroundColor);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.restore();\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (let i = 0, ii = images.length; i < ii; i++) {\n const image = images[i];\n const width = image.width,\n height = image.height;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height,\n /* trackTransform */ false\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height,\n /* trackTransform */ false\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n ctx.mozCurrentTransform,\n imgData.interpolate\n );\n\n const [rWidth, rHeight] = drawImageAtIntegerCoords(\n ctx,\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: rWidth,\n height: rHeight,\n });\n }\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n w,\n h,\n /* trackTransform */ false\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = this.ctx.mozCurrentTransform;\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (!this._cachedScaleForStroking) {\n const { lineWidth } = this.current;\n const m = this.ctx.mozCurrentTransform;\n let scaleX, scaleY;\n\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n const normX = Math.abs(m[0]);\n const normY = Math.abs(m[3]);\n if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[1]);\n const normY = Math.hypot(m[2], m[3]);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking = [scaleX, scaleY];\n }\n return this._cachedScaleForStroking;\n }\n\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n let savedMatrix, savedDashes, savedDashOffset;\n if (saveRestore) {\n savedMatrix = ctx.mozCurrentTransform.slice();\n savedDashes = ctx.getLineDash().slice();\n savedDashOffset = ctx.lineDashOffset;\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when scaleX !== scaleY.\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n ctx.lineDashOffset /= scale;\n\n ctx.stroke();\n\n if (saveRestore) {\n ctx.setTransform(...savedMatrix);\n ctx.setLineDash(savedDashes);\n ctx.lineDashOffset = savedDashOffset;\n }\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || isNodeJS) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n ctx.mozCurrentTransform\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static get MAX_PATTERN_SIZE() {\n return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 coordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [\n x0,\n y0,\n x1,\n y1,\n ]);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest } from \"./util.js\";\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false,\n}) {\n const opaque = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n\n return { srcPos, destPos };\n}\n\nexport { applyMaskImageData };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { objectFromMap, warn } from \"../shared/util.js\";\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n for (const group of data.groups) {\n this._groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n _evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n if (this._order) {\n return this._order.slice();\n }\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n return this._groups.size > 0 ? objectFromMap(this._groups) : null;\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename =\n params.contentDispositionFilename || null;\n\n const initialData = params.initialData;\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader?.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader?.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let { width, height } = getRectDims(data.rect);\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (data.hasOwnCanvas) {\n const transform = viewport.transform.slice();\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(transform);\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n // Reset the scale part of the transform matrix (which must be diagonal\n // or anti-diagonal) in order to avoid to rescale the canvas.\n // The canvas for the annotation is correctly scaled when it is drawn\n // (see `beginAnnotation` in canvas.js).\n for (let i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n container.style.transform = `matrix(${transform.join(\",\")})`;\n } else {\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n }\n\n container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || data.color || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n }\n return container;\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n event.target.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n });\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n action({ detail, target: element });\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _renderQuadrilaterals(className) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement|Array<HTMLSectionElement>}\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.getElementById(id);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { id, exportValue } = domElement;\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n return shadow(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\"),\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action ||\n parameters.data.isTooltipOnly ||\n parameters.data.resetForm ||\n (parameters.data.actions &&\n (parameters.data.actions.Action ||\n parameters.data.actions[\"Mouse Up\"] ||\n parameters.data.actions[\"Mouse Down\"]))\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n let hasClickAction = false;\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n hasClickAction = true;\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.getElementById(id);\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = AnnotationElement.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n const textContent = storedData.formattedValue || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n valueOnFocus: \"\",\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n elementData.valueOnFocus = event.target.value;\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue,\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n // if the key is one of Escape, Enter or Tab\n // then the data are committed\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.valueOnFocus === value) {\n return;\n }\n // Save the entered value\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n const { value } = event.target;\n elementData.userValue = value;\n if (this._mouseState.isDown && elementData.valueOnFocus !== value) {\n // Focus out using the mouse: data are committed\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n\n // We handle the event ourselves.\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontSize, fontColor } = this.data.defaultAppearanceData;\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n if (fontSize) {\n style.fontSize = `${fontSize}px`;\n }\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n this._setDefaultPropertiesFromJS(container);\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n fontSize = 9;\n }\n const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n selectElement.style.fontSize = `${fontSize}px`;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n if (!event.target.multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(\n optionElement,\n selectElement.children[index]\n );\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, /* isExport */ true);\n const value = getValue(event, /* isExport */ false);\n storage.setValue(id, { value: exportValue });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n ],\n event => event.target.checked\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(event, /* isExport */ true) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n this.container.style.left = `${popupLeft}px`;\n this.container.style.top = `${popupTop}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n const div = parameters.div;\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage:\n parameters.annotationStorage || new AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || { isDown: false },\n });\n if (element.isRenderable) {\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.appendChild(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n const { page, viewport, annotations, annotationCanvasMap, div } =\n parameters;\n const transform = viewport.transform;\n const matrix = `matrix(${transform.join(\",\")})`;\n\n let scale, ownMatrix;\n for (const data of annotations) {\n const elements = div.querySelectorAll(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (elements) {\n for (const element of elements) {\n if (data.hasOwnCanvas) {\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ownMatrix) {\n // When an annotation has its own canvas, then\n // the scale has been already applied to the canvas,\n // so we musn't scale it twice.\n scale = Math.abs(transform[0] || transform[1]);\n const ownTransform = transform.slice();\n for (let i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n }\n\n const left = rect[0] * scale;\n const top = rect[1] * scale;\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.transformOrigin = `${-left}px ${-top}px`;\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\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 [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\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\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue; // Handled below.\n }\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure overwrite\n // any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack[stack.length - 1];\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack[stack.length - 1][1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.appendChild(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n * render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {DocumentFragment} container - The DOM node that will contain the\n * text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n * viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection\n ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n }\n : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n };\n\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._viewport.transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (\n geom.str.length > 1 ||\n (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n ) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n const divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n\n let m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n const divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = Util.applyTransform(points[j], m);\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n\n const expanded = new Array(boxes.length);\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n }\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n const horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n for (const boundary of bounds) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n let i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n let j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n const changedHorizon = [];\n let lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n const useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n let used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n }\n\n // Set new x2 for all unset boundaries.\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (!this._enhanceTextSelection) {\n // The `textDiv` properties are no longer needed.\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (\n items[i].type === \"beginMarkedContentProps\" ||\n items[i].type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = textDivProperties.canvasWidth / width;\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n transform = `scaleX(${scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.appendChild(br);\n }\n }\n\n /**\n * @private\n */\n _render(timeout = 0) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = this._document.createElement(\"canvas\");\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n /**\n * @param {boolean} [expandDivs]\n */\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n}\n\nexport { renderTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n ) {\n if (\n URL.createObjectURL &&\n typeof Blob !== \"undefined\" &&\n !forceDataSchema\n ) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n AnnotationMode,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n setPDFNetworkStreamFactory,\n version,\n} from \"./display/api.js\";\nimport {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"pdfjs/display/network.js\"),\n import(\"pdfjs/display/fetch_stream.js\"),\n ]);\n\n setPDFNetworkStreamFactory(async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const { PDFNetworkStream } = require(\"./display/network.js\");\n const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n}\n\nexport {\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n LoopbackPort,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderTextLayer,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","URL","shadow","obj","prop","value","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","arrayByteLength","arr","byteLength","arraysToBytes","resultLength","pos","data","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","e","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","createPromiseCapability","capability","isSettled","get","promise","Promise","resolve","reject","reason","isNodeJS","process","versions","nw","electron","type","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","DOMCMapReaderFactory","DefaultStandardFontDataFactory","DOMStandardFontDataFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","require","createPDFNetworkStream","setPDFNetworkStreamFactory","pdfNetworkStreamFactory","getDocument","src","task","PDFDocumentLoadingTask","source","PDFDataRangeTransport","range","params","rangeTransport","worker","window","location","href","Buffer","isNaN","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","rangeChunkSize","docBaseUrl","isDataScheme","maxImageSize","cMapUrl","standardFontDataUrl","useWorkerFetch","disableFontFace","useSystemFonts","ownerDocument","globalThis","document","disableRange","disableStream","disableAutoFetch","workerParams","port","GlobalWorkerOptions","workerPort","PDFWorker","fromPort","_worker","docId","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","onPassword","onProgress","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","deprecated","fingerprints","stats","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","saveDocument","size","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_bitmaps","Set","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","cacheKey","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","arguments","renderInteractiveForms","includeAnnotationStorage","time","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_structTreePromise","_destroy","waitOn","values","force","completed","cancel","clear","bitmap","close","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","serializable","streamReader","RenderingCancelledException","setTimeout","curCacheKey","curIntentState","LoopbackPort","_listeners","_deferred","postMessage","transfers","event","structuredClone","call","addEventListener","removeEventListener","indexOf","splice","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","WeakMap","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","getWorkerSrc","docStats","pageCache","pagePromises","metadataPromise","fontLoader","FontLoader","_onUnsupportedFeature","bind","styleElement","_params","isCompressed","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","annotationHash","hash","page","hasOwnProperty","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","evt","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","enabled","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","width","height","freeze","fetch","featureId","cachedPromise","num","gen","filename","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","settled","RenderTask","_internalRenderTask","onContinue","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","canvas","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","SVG_NS","PixelsPerInch","CSS","PDF","PDF_TO_CSS_UNITS","BaseCanvasFactory","_document","_createCanvas","createElement","fetchData","asTypedArray","isValidFetchUrl","baseURI","response","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","createElementNS","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","convertToViewportPoint","x","y","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","getFilenameFromUrl","anchor","query","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","includes","started","times","now","start","outBuf","longest","duration","padEnd","removeScriptElement","script","onload","remove","onerror","head","documentElement","appendChild","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","style","context","getContext","reset","canvasAndContext","svg","setAttribute","BaseFontLoader","nativeFontFaces","addNativeFontFace","nativeFontFace","fonts","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","rules","fontsToLoad","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","navigator","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","names","loadedName","div","visibility","position","top","left","span","fontFamily","body","translatedData","compiledGlyphs","cssFontInfo","FontFace","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","args","cmd","_storage","_modified","onSetModified","onResetModified","getValue","defaultValue","getRawValue","setValue","modified","entry","val","entries","_setModified","getAll","MurmurHash3_64","update","JSON","stringify","hexdigest","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","translate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","f","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","addContextCurrentTransform","_transformStack","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","_originalResetTransform","_transformMatrix","desc","getOwnPropertyDescriptor","getPrototypeOf","_setLineWidth","_getLineWidth","getLineWidth","_","getCurrentTransform","getCurrentTransformInverse","ad_bc","bc_ad","old","prev","pop","cosValue","cos","sinValue","sin","CachedCanvases","cache","getCanvas","trackTransform","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","round","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","scaleX","hypot","scaleY","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","elem","mask","count","sum","steps","Int32Array","path","outlines","coords","Path2D","p0","step","pp","drawOutline","o","l","ll","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","k","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","applyMaskImageData","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","foregroundColor","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","backgroundColor","foreground","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","defaultBackgroundColor","fg","bg","isValidDefaultBg","defaultBg","cB","rB","gB","bB","newComp","lumB","selectColor","lumC","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","endLayout","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","withoutTranslation","cachedImage","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","limit","dashArray","dashPhase","flatness","states","state","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","floor","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","mode","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","getSinglePixelWidth","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","isArray","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","viewportScaleFactorStr","savedCtx","compiled","skewX","skewY","positions","trans","images","image","w","h","imgToPaint","HTMLElement","getCanvasPosition","appendImage","tag","visible","isVisible","isContentVisible","isEmpty","absDet","normX","normY","getScaleForStroking","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","savedMatrix","savedDashes","savedDashOffset","op","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","colors","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","cssColor","inverseDecode","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","_processStreamMessage","action","cbSourceName","cbTargetName","result","_createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","self","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","allSettled","metadataMap","parsedData","rawData","getRaw","OptionalContentGroup","creator","_order","_groups","order","groups","baseState","off","_evaluateVisibilityExpression","array","operator","element","expression","policy","ids","setVisibility","getOrder","from","getGroups","getGroup","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","some","_begin","_progressiveDataLength","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","output","walk","node","shouldBuildText","child","fs","readFile","Canvas","createCanvas","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","container","_createContainer","quadrilaterals","_createQuadrilaterals","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","detail","target","ColorConverters","display","hidden","print","focus","preventScroll","userName","title","readonly","removeAttribute","required","bgColor","fgColor","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","quadPoints","savedRect","quadPoint","_createPopup","trigger","popupElement","PopupElement","modificationDate","richText","hideWrapper","popup","_renderQuadrilaterals","className","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementById","getElementsByName","platform","isWin","isMac","isTooltipOnly","resetForm","Action","link","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","hasClickAction","_bindJSAction","_bindResetFormAction","index","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","eventBus","dispatch","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","dispatchEvent","Event","hasPopup","alt","dataset","l10nId","l10nArgs","alternativeText","_getKeyModifier","ctrlKey","metaKey","_setEventListener","baseName","eventName","valueGetter","shiftKey","modifier","_setEventListeners","getter","_setBackgroundColor","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","formattedValue","elementData","userValue","valueOnFocus","multiLine","disabled","readOnly","tabIndex","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","setSelectionRange","commitKey","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","isDown","Keystroke","inputType","preventDefault","change","maxLen","maxLength","comb","fieldWidth","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","textAlignment","textAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","fontSizeStyle","selectElement","combo","multiSelect","multiple","option","selected","optionElement","displayValue","isExport","selectedIndex","filter","getItems","multipleSelection","findIndex","insertBefore","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","selector","parentId","parentElements","querySelectorAll","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","hideElement","dir","dateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","html","lastChild","contents","_formatContents","_toggle","_show","_hide","lines","split","line","createTextNode","pin","zIndex","unpin","lineCoordinates","append","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","content","file","_download","openOrDownloadData","AnnotationLayer","sortedAnnotations","popupAnnotations","rendered","renderedElement","prepend","setAnnotationCanvasMap","ownMatrix","elements","ownTransform","querySelector","firstChild","nodeName","replaceChild","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","getAttribute","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","textDivs","parent","childHtml","xmlns","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_viewport","atan2","fontName","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","jj","boxScale","boxes","x1New","x2New","expandBoundsLTR","sort","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","concat","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_processItems","styleCache","len","parentNode","_render","timeout","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","padding","renderTextLayer","renderParameters","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","host","PDFNodeStream","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","NetworkManager_getXhr","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","pdfjsVersion","pdfjsBuild"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/build/pdf.sandbox.js b/js/pdfjs/build/pdf.sandbox.js
index 46049b6..a48ade8 100644
--- a/js/pdfjs/build/pdf.sandbox.js
+++ b/js/pdfjs/build/pdf.sandbox.js
@@ -1,6 +1,6 @@
/**
* @licstart The following is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*
* Copyright 2022 Mozilla Foundation
*
@@ -17,7 +17,7 @@
* limitations under the License.
*
* @licend The above is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*/
(function webpackUniversalModuleDefinition(root, factory) {
@@ -29,7 +29,7 @@
exports["pdfjs-dist/build/pdf.sandbox"] = factory();
else
root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory();
-})(this, function() {
+})(this, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ([
@@ -37,7 +37,7 @@ return /******/ (() => { // webpackBootstrap
/* 1 */
/***/ ((__unused_webpack_module, exports) => {
-Object.defineProperty(exports, "__esModule", ({value:true}));exports["default"]=void 0;var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h=Object.assign,n,q;b.ready=new Promise(function(a,c){n=a;q=c;});var r=h({},b),t="";"undefined"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1):t="";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);h(b,r);r=null;var v;b.wasmBinary&&(v=b.wasmBinary);var noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&x("no native wasm support detected");var y,z=!1;function A(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var T=(l.length<<2)+1;p=B(T);C(l,D,p,T);}return p;},array:function(l){var p=B(l.length);E.set(l,p);return p;}};a=b["_"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var w=f[d[m]];w?(0===k&&(k=F()),g[m]=w(e[m])):g[m]=e[m];}d=a.apply(null,g);return d=function(l){0!==k&&G(k);return"string"===c?H(l):"boolean"===c?!!l:l;}(d);}var I="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function J(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&I)return I.decode(a.subarray(c,d));for(e="";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else e+=String.fromCharCode(f);}return e;}function H(a){return a?J(D,a,void 0):"";}function C(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function K(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return c;}function L(a){var c=K(a)+1,d=M(c);d&&C(a,E,d,c);return d;}var ba,E,D,N;function ca(){var a=y.buffer;ba=a;b.HEAP8=E=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=D=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a);}var O,da=[],ea=[],fa=[];function ha(){var a=b.preRun.shift();da.unshift(a);}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function x(a){if(b.onAbort)b.onAbort(a);a="Aborted("+a+")";u(a);z=!0;a=new WebAssembly.RuntimeError(a+". Build with -s ASSERTIONS=1 for more info.");q(a);throw a;}function S(a){return a.startsWith("data:application/octet-stream;base64,");}var U;U="data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAAF/YAAAYAV/f39/fwBgBH9+fn8AYAV/fn5+fwF/YAd/f39/f39/AX9gBn9+f35+fwF/YAR/fn9+AX5gAn5/AX9gBH9+fn8Bf2ACfn8AYAl/f39/f39/f38Bf2AEf35+fwF+YAZ/f39/f38BfmADf35+AGAEf35/fwF/YAV/fn5/fwBgB39+f39/f38BfmADf39+AGAEf35/fwBgBH9+f34Bf2AEf35+fgF/YAR/f39+AX9gCH9/f39/f39/AX9gB39/f39/f38AYAJ8fwF8YAN+f38Bf2ADfHx/AXxgAn5+AX5gBH9/fn8AYAR/fn5+AX5gBn98f39/fwF/YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2ACf38BfGAGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2ADfn5+AX9gBH9/f34BfmACfH8Bf2ACfHwBf2AIf35+fn5/fn4BfmADf358AX5gAAF+YAJ+fgF8YAF/AXxgA39/fAACPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIB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Rw8LIAGnDwsgAacpAgQhBCAAIAEQCiAEQv////8Hg0IAUg8LIAGnLQAFIQIgACABEAogAkF/c0GAAXFBB3YPCyADQQdrQW1NBEAgARBJIgVEAAAAAAAAAABiIAW9Qv///////////wCDQoGAgICAgID4/wBUcQ8LIAAgARAKQQEhAgsgAgsZACAAKAIQIAEQ5gEiAUUEQCAAEMcBCyABCz8BAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABBtf0AIAIQE0F/DAELIAAQDwshACACQRBqJAAgAAsiACAALQAHQYABcQRAIAAgAUEBdGovARAPCyAAIAFqLQAQCygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIgBGiACQRBqJAALCwAgACABQQEQ4wUL5QoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyINQg+GIANCMYiEIQ4gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEPIA1CEYghECAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAyEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAyEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyAMQv///////z9YBEAgBUHQAGogASALIAEgCyALUCIGG3kgBkEGdK18pyIGQQ9rEHFBECAGayEGIAUpA1giC0IgiCEPIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyANIAMgDSANUCIIG3kgCEEGdK18pyIIQQ9rEHEgBiAIa0EQaiEGIAUpA0giAkIPhiAFKQNAIgNCMYiEIQ4gAkIRiCEQCyADQg+GQoCA/v8PgyICIAFCIIgiBH4iEiADQhGIQv////8PgyIMIAFC/////w+DIgF+fCIRQiCGIg0gASACfnwiAyANVK0gAiALQv////8PgyILfiIVIAQgDH58IhMgDkL/////D4MiDSABfnwiFCARIBJUrUIghiARQiCIhHwiESACIA9CgIAEhCIOfiIWIAsgDH58Ig8gBCANfnwiEiAQQv////8Hg0KAgICACIQiAiABfnwiEEIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCAMIA5+fCIMIBhUrSAMIAIgBH58IgQgDFStfCACIA5+fCAEIAQgEyAVVK0gEyAUVq18fCIEVq18IAIgC34iCyANIA5+fCICIAtUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElStIA8gFlStIA8gElatfHxCIIYgEEIgiIR8IgJWrXwgAiACIBEgFFStIBEgF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIANCP4ghCyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIANCAYYhAyALIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAMgASAGQf8AaiIGEHEgBUEgaiACIAQgBhBxIAVBEGogAyABIAcQoAIgBSACIAQgBxCgAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEDIAUpAyggBSkDGIQhASAFKQMAIQIgBSkDCAwBCyAEQv///////z+DIAatQjCGhAsgCoQhCiADUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyADIAFCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQCIAJGDQAgAyAEQQN0aiIDIAI2AgQgAyABNgIAIAAgATYC6AIgACAEQQFqNgLgAiAAIAI2AuQC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AkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUsNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgsbAQF/IAAgARA6BH9BAAUgAEGiNkEAEBRBfwsLGQEBfyABIAIQPyIDRQRAIAAgAhCdAwsgAwsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQEgAUEAEP0BIAJBEGokAAsZACAAKAIQIAEQmwIiAUUEQCAAEMcBCyABC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBFGiABRQRAA0AgACAFQYACEGUgAkGAAmsiAkH/AUsNAAsLIAAgBSACEGULIAVBgAJqJAALDwAgACgCQEGAAmogARAOC28CAX4BfyAAIQQCQAJAIAEQEA0AIAAgAUE7IAFBABASIgMQCwRAIAMPCyADECANASAAIAMQCiAAIAEQjwMiBA0AQoCAgIDgAA8LIAQoAiggAkEDdGopAwAQDSEDCyAAIAMgAhBQIQEgACADEAogAQsxACAAIAEgAkKAgICACHxC/////w9YBH4gAkL/////D4MFIAK5EBULIANBh4ABEMwCCxAAIAAgADYCBCAAIAA2AgALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIg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IAooAgwoAgBBGnZBPXEgBkECcXIQoAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCgAxshBwwCCyAAIAZBv9EAEHchBwwBC0F/IQcLIApBEGokACAHC0wBAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAQ+gFFDQELIANBADYCDCAAQQQgAkEAEP0BQX8hBAsgA0EQaiQAIAQLzAEBAn8CQCABQoCAgIBwWgRAIAGnIQMDQAJAIAMtAAVBBHFFDQAgACgCECgCRCADLwEGQRhsaigCFCIERQ0AIAQoAhBFDQAgACADrUKAgICAcIQQDSIBIAIgBCgCEBETACECIAAgARAKIAIPCyADrUKAgICAcIQQDSEBIABBACADIAIQUyEEIAAgARAKIAQNAgJAIAMvAQZBFWtB//8DcUEISw0AIAAgAhCmAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAsaACAAIAEgAkEATgR+IAKtBSACuBAVCxCfAQsLACAAQf////8HcQu/CQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iB0KAgICAgIDAgIB/ViAHQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAWEUEUNACABIQMgAiEEDAELIAMgASABIANUIAUgBlYgBSAGURsiCxshBSAEIAIgCxsiB0L///////8/gyEGIAIgBCALGyICQjCIp0H//wFxIQwgB0IwiKdB//8BcSIJRQRAIApB4ABqIAUgBiAFIAYgBlAiCRt5IAlBBnStfKciCUEPaxBxIAopA2ghBiAKKQNgIQVBECAJayEJCyABIAMgCxshAyACQv///////z+DIQQgDEUEQCAKQdAAaiADIAQgAyAEIARQIgsbeSALQQZ0rXynIgtBD2sQcUEQIAtrIQwgCikDWCEEIAopA1AhAwsgBEIDhiADQj2IhEKAgICAgICABIQhBCAGQgOGIAVCPYiEIQYgAiAHhSEIAn4gA0IDhiIBIAkgDGsiC0UNABogC0H/AEsEQEIAIQRCAQwBCyAKQUBrIAEgBEGAASALaxBxIApBMGogASAEIAsQoAIgCikDOCEEIAopAzAgCikDQCAKKQNIhEIAUq2ECyEBIAZCgICAgICAgASEIQMgBUIDhiECAkAgCEIAUwRAIAIgAX0iBSADIAR9IAEgAlatfSIEhFAEQEIAIQNCACEEDAMLIARC/////////wNWDQEgCkEgaiAFIAQgBSAEIARQIgsbeSALQQZ0rXynQQxrIgsQcSAJIAtrIQkgCikDKCEEIAopAyAhBQwBCyABIAJ8IgUgAVStIAMgBHx8IgRCgICAgICAgAiDUA0AIAVCAYMgBEI/hiAFQgGIhIQhBSAJQQFqIQkgBEIBiCEECyAHQoCAgICAgICAgH+DIQEgCUH//wFOBEAgAUKAgICAgIDA//8AhCEEQgAhAwwBC0EAIQsCQCAJQQBKBEAgCSELDAELIApBEGogBSAEIAlB/wBqEHEgCiAFIARBASAJaxCgAiAKKQMAIAopAxAgCikDGIRCAFKthCEFIAopAwghBAsgBEI9hiAFQgOIhCICIAWnQQdxIglBBEutfCIDIAJUrSAEQgOIQv///////z+DIAutQjCGhCABhHwhBAJAIAlBBEYEQCAEIANCAYMiASADfCIDIAFUrXwhBAwBCyAJRQ0BCwsgACADNwMAIAAgBDcDCCAKQfAAaiQAC8kFAQV/IwBB4ABrIgMkACADIAE2AlwCQAJAAkACQAJAAkACQAJAAkACQAJAA0AgAkEUbCIEIANqQRRrIQUDQAJAIAMgAygCXCIBQQRqNgJcAkACQAJAAkACQCABKAIAIgYOCAABAgMDAwQIBQsgAkEETg0QIAMgAUEIajYCXCABKAIEIQEgAyAEaiIEIAAoAgwgACgCEBCGASACQQFqIQIgBCABELQERQ0GDAkLIAJBBE4NDiADIAFBCGo2AlwgASgCBCEBIAMgBGoiBCAAKAIMIAAoAhAQhgEgAkEBaiECIAQgARCzBEUNBQwICyACQQRODQwgAyABQQhqNgJcIAEoAgQhASADIARqIgQgACgCDCAAKAIQEIYBIAJBAWohAiAEIAEQ3gJFDQQMBwsgAkEBTA0KIAJBBE8NCSADIARqIgEgACgCDCAAKAIQEIYBIAEgAUEoayIEKAIIIAQoAgAgAUEUayIFKAIIIAUoAgAgBkEDaxCoAg0FIAJBAWshAiAEEE8gBRBPIAQgASgCEDYCECAEIAEpAgg3AgggBCABKQIANwIADAMLIAJBAEwNByAFEKcCRQ0BDAULCwsQAQALIAJBAUcNAiAAIAMoAgAQ3wIEf0F/BSAAKAIIIAMoAgggAygCAEECdBAjGiAAIAMoAgA2AgBBAAshASADEE8MCQsgAkEBaiECC0EAIQEgAkEAIAJBAEobIQADQCAAIAFGBEBBfyEBDAkFIAMgAUEUbGoQTyABQQFqIQEMAQsACwALQefyAEHn4wBBpgpB2iEQAAALQbjyAEHn4wBBmwpB2iEQAAALQdbnAEHn4wBBjApB2iEQAAALQfTxAEHn4wBBiwpB2iEQAAALQdbnAEHn4wBBgApB2iEQAAALQdbnAEHn4wBB+QlB2iEQAAALQdbnAEHn4wBB8glB2iEQAAALIANB4ABqJAAgAQtpAQJ/An8gACgCACIDQQJqIgQgACgCBEoEQEF/IAAgBBDfAg0BGiAAKAIAIQMLIAAgA0EBajYCACAAKAIIIgQgA0ECdGogATYCACAAIAAoAgAiAEEBajYCACAEIABBAnRqIAI2AgBBAAsLagEBfyAEIAMoAgBKBH8jAEEQayIFJAAgACABKAIAIAQgAygCAEEDbEECbRBKIgAgAmwgBUEMahC0ASIEBH8gAyAFKAIMIAJuIABqNgIAIAEgBDYCAEEABUF/CyEAIAVBEGokACAABUEACwtHAAJAIAAgASACEA0QzQUiAA0AIAEpAwAiAkIAUwRAIAEgAiAFfCICNwMACyACIANZBEAgBCIDIAJZDQELIAEgAzcDAAsgAAuYAQIDfwF+IAAgACgC2AEiAUEBazYC2AEgAUEBTAR/QQAhASAAQZDOADYC2AECQCAAKAIQIgIoApABIgNFDQAgAiACKAKUASADEQIARQ0AIABBgd4AQQAQTQJAIAAoAhApA4ABIgRCgICAgHBUDQAgBKciAC8BBkEDRw0AIAAgAC0ABUHfAXFBIHI6AAULQX8hAQsgAQVBAAsLygMBCH8gAUEQaiEHAkACQAJ/AkACQCABKAIQIgUtABBFDQAgACgCECIEKALUASAFKAIUIAIQvwIgAxC/AiIKIAQoAsgBENMCQQJ0aiEEA0ACQCAEKAIAIgZFDQACQCAGKAIUIApHDQAgBigCLCAFKAIsRw0AQQAhBCAGKAIgIAUoAiAiCUEBakcNAANAIAQgCUcEQCAGIARBA3QiCGoiCygCNCAFIAhqIggoAjRHDQIgBEEBaiEEIAgoAjAgCygCMHNBgICAIEkNAQwCCwsgBiAJQQN0aiIEKAI0IAJHDQAgBCgCMEEadiADRg0BCyAGQShqIQQMAQsLIAYiBARAIAQoAhwiAiAFKAIcRwRAIAAgASgCFCACQQN0EJkCIgJFDQYgASACNgIUCyAHIAQQnwIiAjYCACAAKAIQIAUQnQIMAgsgBSgCAEEBRg0AIAAgBRDSBSIFRQ0EIAVBAToAECAAKAIQIAUQnwMgACgCECAHKAIAEJ0CIAcgBTYCAAsgBSgCAEEBRw0CQQAgACAHIAEgAiADEOIEDQEaIAcoAgAhAgsgASgCFCACKAIgQQN0akEIawsPC0HH8gBBt+MAQcw+QbMJEAAAC0EAC34CAn8BfiMAQRBrIgMkACAAAn4gAUUEQEIADAELIAMgASABQR91IgJqIAJzIgKtQgAgAmciAkHRAGoQcSADKQMIQoCAgICAgMAAhUGegAEgAmutQjCGfCABQYCAgIB4ca1CIIaEIQQgAykDAAs3AwAgACAENwMIIANBEGokAAulAgEGfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASICIAEoAsQBIgRIBEAgASgCzAEhAyACDAELIAJBAWogBEEDbEECbRBKIQQgACgCACEDAkAgASgCzAEiBiABQdABakYEQCADQQAgBEEDdCAFQQxqELQBIgNFDQMgAyABKALMASABKALIAUEDdBAjGgwBCyADIAYgBEEDdCAFQQxqELQBIgNFDQILIAUoAgwhBiABIAM2AswBIAEgBkEDdiAEajYCxAEgASgCyAELQQFqNgLIASADIAJBA3RqIgQgASgCvAE2AgAgBCABKALAATYCBCAAQbIBEAwgACACQf//A3EQFiABIAI2ArwBDAELQX8hAgsgBUEQaiQAIAILEwAgAEKAgICAcINCgICAgMAAUQtJAQJ/IAJBKRA/IgQtABEEQCAAEMoCQQAPCyAAIAQpAwgiAiADIAJBABASIgIQCwR/QQAFIAFCgICAgDAgAiACECYbNwMAIAQLCyQAIAAgATYCDCAAQQA2AgggAEIANwIAIAAgAkHsAiACGzYCEAsOACAAKAIQIAEgAhDdBQtMAQJ/An8gACgCBCIDIAJqIgQgACgCCEsEf0F/IAAgBBDMAQ0BGiAAKAIEBSADCyAAKAIAaiABIAIQIxogACAAKAIEIAJqNgIEQQALC6UFAQR/IwBBEGsiBCQAIAQgACgCODYCDAJ/IAEhAyAEKAIMIQACQAJAAn8DQCAAIgJBAWohAAJAIAItAAAiAUEJayIFQRdLDQBBASAFdCIFQY2AgARxDQEgBUEScUUNACADRQ0BDAMLAkAgAUEvRwRAQT0hAyABQT1HDQFBpH8gAC0AAEE+Rg0DGgwFCyAALQAAIgFBKkcEQCABQS9HBEBBLyEDDAYLQS8hASADDQQDQAJAAkAgAUEKaw4EBQEBBQALIAFFDQQLIAAtAAEhASAAQQFqIQAMAAsACwNAIAAiAUEBaiEAIAEtAAEiAkENRgRAIAMNBQwBCyACRQ0CIANBACACQQpGGw0EIAJBKkcNACABLQACQS9HDQALIAFBA2ohAAwBCwsgASIDEMQCRQ0CAkACQAJAAkACQCADQeUAaw4FAQIEBAADCyAALQAAIgFB7gBGBH9Bt38gAi0AAhC/AUUNCBogAC0AAAUgAQtB/wFxQe0ARw0DIAItAAJB8ABHDQMgAi0AA0HvAEcNAyACLQAEQfIARw0DIAItAAVB9ABHDQMgAi0ABhC/AQ0DIAQgAkEGajYCDEFNDAcLIAAtAABB+ABHDQIgAi0AAkHwAEcNAiACLQADQe8ARw0CIAItAARB8gBHDQIgAi0ABUH0AEcNAiACLQAGEL8BDQIgBCACQQZqNgIMQUsMBgsgAC0AAEH1AEcNASACLQACQe4ARw0BIAItAANB4wBHDQEgAi0ABEH0AEcNASACLQAFQekARw0BIAItAAZB7wBHDQEgAi0AB0HuAEcNASACLQAIEL8BDQFBRQwFCyADQe8ARw0AIAAtAABB5gBHDQAgAi0AAhC/AQ0AQVkMBAtBg38LDAILQQoMAQsgAwshACAEQRBqJAAgAAufAQECfwJAAkAgAkL/////B1gEQCAAIAEgAqcQkwEQeCIEQQBMDQEgACABIAIQnwEiAhALRQ0CQX8hBAwCCyAAIAIQngMiBUUEQEF/IQQMAQsCQCAAIAEgBRB4IgRBAEwEQEKAgICAMCECDAELIAAgASAFIAFBABASIgIQC0UNAEF/IQQLIAAgBRARDAELQoCAgIAwIQILIAMgAjcDACAECxYAIABCgICAgHBaBEAgAKcgATYCIAsLDQAgACABIAEQQhCcAgtqAQF/IAAoAhQEQCAAKAIAIAEQCkF/DwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABEDwiARALRQ0AIAAQigNBfw8LIAAgAaciAkEAIAIoAgRB/////wdxEFchAiAAKAIAIAEQCiACCxYBAX8gAEIgiKciAUUgAUEHa0FuSXILSgECfyACQv////8HWARAIAAgASACIANBgIABEN8BDwsgACACEJ4DIgRFBEAgACADEApBfw8LIAAgASAEIAMQSCEFIAAgBBARIAUL+QkBEn8jAEEwayIHJAAgAUEANgIAIAJBADYCACAHQQA2AiwgB0EANgIoIARBMHEhDiAEQRBxIREgAygCECIJECchBQJAAkACQAJ/A0AgCSgCICAISgRAAkAgBSgCBCIMRQ0AQQAgESAFKAIAQYCAgIABcRsgBCAAIAwQpQMiDXZBAXFFcg0AAkAgDkUNACAFKAIAQYCAgIB8cUGAgICAeEcNACADKAIUIAhBA3RqKAIAKAIQKQMAEIQBRQ0AIAAgBSgCBBDgAUF/DAQLIAAgB0EkaiAMELMBBEAgC0EBaiELDAELIA1FBEAgD0EBaiEPDAELIApBAWohCgsgBUEIaiEFIAhBAWohCAwBCwtBACEFAkAgAy0ABSIGQQRxRQ0AIAZBCHEEQCAEQQFxRQ0BIAMoAiggC2ohCwwBCyADLwEGIgZBBUYEQCAEQQFxRQ0BIAOtQoCAgIBwhBCZBCALaiELDAELIAAoAhAoAkQgBkEYbGooAhQiBkUNACAGKAIEIgZFDQBBfyAAIAdBLGogB0EoaiADrUKAgICAcIQgBhE6AA0BGkEAIQgDQCAIIAcoAihPDQEgBCAAIAhBA3QiCSAHKAIsaigCBCIGEKUDdkEBcQRAAkAgDkUEQEEAIQYMAQsgACAHIAMgBhBTIgZBAEgEQCAAIAcoAiwgBygCKBBkQX8MBQsgBgR/IAcoAgAhBiAAIAcQTCAGQQJ2QQFxBUEACyEGIAcoAiwgCWogBjYCAAsgBSARRSAGcmohBQsgCEEBaiEIDAALAAsgACALIA9qIg8gCmogBWoiE0EBEEpBA3QQLSIQRQRAIAAgBygCLCAHKAIoEGRBfwwBC0EAIQkgAygCECIVECchBSALIQYgDyEKQQEhFEEAIQgDQCAIIBUoAiBORQRAAkAgBSgCBCISRQ0AQQAgESAFKAIAQYCAgIABcSIMGyAEIAAgEhClAyINdkEBcUVyDQAgDEEcdiEWAn8gACAHQSRqIBIQswEEQCAJQQFqIQ5BACEUIAYhDCAKDAELIA1FBEAgBkEBaiEMIAkhDiAGIQkgCgwBCyAJIQ4gBiEMIAohCSAKQQFqCyENIAAgEhAXIQogECAJQQN0aiIGIBY2AgAgBiAKNgIEIA4hCSAMIQYgDSEKCyAFQQhqIQUgCEEBaiEIDAELCwJAIAMtAAUiDUEEcUUNAAJ/IA1BCHEEQCAEQQFxRQ0CIAMoAigMAQsgAy8BBkEFRwRAQQAhBQNAIAUgBygCKE9FBEACQEEAIBEgBygCLCAFQQN0aiIDKAIAIgwbIAQgACADKAIEIg0QpQN2QQFxRXJFBEAgECAKQQN0aiIDIAw2AgAgAyANNgIEIApBAWohCgwBCyAAIA0QEQsgBUEBaiEFDAELCyAAIAcoAiwQGAwCCyAEQQFxRQ0BIAOtQoCAgIBwhBCZBAshCEEAIQUgCEEAIAhBAEobIQQDQCAEIAVGDQEgECAJQQN0aiIDQQE2AgAgAyAFEJMBNgIEIAVBAWohBSAJQQFqIQkMAAsACyAJIAtHDQEgBiAPRw0CIAogE0cNAyALRSAUckUEQCAQIAtBCEEnIAAQrAILIAEgEDYCACACIBM2AgBBAAshBSAHQTBqJAAgBQ8LQasWQbfjAEHKO0HRPxAAAAtB/hVBt+MAQcs7QdE/EAAAC0HHFkG34wBBzDtB0T8QAAALHwEBfiAAKAIQIgApA4ABIQEgAEKAgICAIDcDgAEgAQsZACAAIAAoAhAiACkDgAEQCiAAIAE3A4ABCwsAIABBgICAgHhyC4QCAQF/AkAgACgCCCICIAAoAgxODQAgACgCEARAIAAgAkEBajYCCCAAKAIEIAJBAXRqIAE7ARBBAA8LIAFB/wFLDQAgACACQQFqNgIIIAAoAgQgAmogAToAEEEADwsCfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABENQCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgAUH/AU0EQCAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABAMAQtBfyAAIAAoAgwQ7gMNARogACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQC0EACws1AQF/IAAoAgAiAQRAIAAoAhQgAUEAIAAoAhARAQAaCyAAQgA3AgAgAEIANwIQIABCADcCCAstAQJ/QX8hAyAAIAFBABCZASICBH8gAhCYAQRAIAAQc0F/DwsgAigCKAVBfwsLCQAgAEEBEPMECxAAIAAoAiAoAgwoAiAtAAQLaQEDfyMAQRBrIgMkAAJAAkAgAUKAgICAcFQNACABpyIELwEGIQUgAgRAIAVBHkcNAQwCCyAFQRVrQf//A3FBCUkNAQsgA0HmEEGRDiACGzYCACAAQbQoIAMQFEEAIQQLIANBEGokACAEC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECsiARALBEAgABCKA0F/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAoAgAgARAKIAIPCyAAIAGnIgBBACAAKAIEQf////8HcRBXCwuJAgIDfwF+IAIgASkCBCIHp0H/////B3EgA0dyRQRAIAGtQoCAgICQf4QQDQ8LIAdCgICAgAiDUCADIAJrIgVBAExyRQRAIAMgAiACIANIGyEGIAIhAwNAIAMgBkZFBEAgBCABIANBAXRqLwEQciEEIANBAWohAwwBCwsgBEGAAk4EQCAAIAEgAkEBdGpBEGogBRCbBA8LQQAhAyAAIAVBABD8ASIARQRAQoCAgIDgAA8LIABBEGohBANAIAMgBUZFBEAgAyAEaiABIAIgA2pBAXRqLQAQOgAAIANBAWohAwwBCwsgBCAFakEAOgAAIACtQoCAgICQf4QPCyAAIAEgAmpBEGogBRDXAgsTACAAQoCAgIBwg0KAgICAkH9RCx4AIAAgASACQQBOBH4gAq0FIAK4EBULIAMgBBDMAgufAgEEfyMAQRBrIgIkAAJAAkACQAJAAkADQAJAAkACQCABEFRBCGoOEAQCBQUFBQUBCAAABgUFCAgFCyABQv////8PgyEBDAcLIAAgAUEBEMEBIgEQC0UNAQwFCwsgACACQQhqIAEQjwIhAyAAIAEQCiADRQ0DIAIgAyADEIgDIgRqIgU2AgxCACEBAkAgBCACKAIIRg0AIAAgBSACQQxqQQBBBBDDAiIBEAsNACACIAIoAgwQiAMgAigCDGoiBDYCDCACKAIIIAQgA2tGDQAgACABEApCgICAgMB+IQELIAAgAxA2DAQLIAAgARAKIABBhDJBABAUDAILIAAgARAKC0KAgICAwH4hAQwBC0KAgICA4AAhAQsgAkEQaiQAIAELzQIBA38CQCABQoCAgIBwVCACQv////8PVnINACACpyIEIAGnIgMoAihPDQACQAJAAkACQAJAAkACQAJAAkACQCADLwEGIgVBCGsOFgEKCgoKCgoKCgoKCgoDAgMEBQYHCAkACyAFQQJHDQkLIAMoAiQgBEEDdGopAwAQDQ8LIAMoAiQgBGowAABC/////w+DDwsgAygCJCAEajEAAA8LIAMoAiQgBEEBdGoyAQBC/////w+DDwsgAygCJCAEQQF0ajMBAA8LIAMoAiQgBEECdGo1AgAPCyADKAIkIARBAnRqKAIAIgBBAE4EQCAArQ8LIAC4EBUPCyADKAIkIARBAnRqKgIAuxAVDwsgAygCJCAEQQN0aisDABAVDwsgACACEDkhAyAAIAIQCiADRQRAQoCAgIDgAA8LIAAgASADIAFBABASIQEgACADEBEgAQuzAQEDfyABQoCAgIBwVARAQQAPCyABpyICLwEGQSlGBEAjAEEQayIEJAACQAJAIAAgBEEIaiABQeEAEIUBIgJFDQAgBCkDCCIBEBAEQCAAIAIpAwAQoAEhAwwCCyAAIAEgAikDCEEBIAIQNSIBEAsNACAAIAEQLCEDIAAgAikDABCgASICQQBIDQAgAiADRg0BIABB7tAAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAItAAVBAXELHgAgAEKAgICAcINCgICAgJB/UQRAIACnIAEQnQQLCxYAIAAgACgCKCABQQN0aikDACABEFALJAEBfyMAQRBrIgMkACADIAI2AgwgACABIAIQqAQgA0EQaiQACxkAIAAgASACQQEgAyAEIAUgBiAHIAgQhQILIQECfyAAKAKYAiICQQBOBH8gACgCgAIgAmotAAAFQQALC60FAQd/IwBBkAJrIgYkACAGQQA6ABAgACAGEPsCIABBEGohCUEBIQQCQAJAA0BBfiEIAkACQAJAAkACQAJAAkACQAJAAkACQCAJKAIAIgNB/gBqDgUBCQkJBwALAkACQAJAAkACQCADQShrDgIBAgALAkAgA0E7aw4DBw0JAAsCQCADQdsAaw4DAQ0DAAsCQCADQfsAaw4DAQ0EAAsgA0Glf0YNByADQS9GDQkgA0Gqf0cNDAwQCyAEQf8BTQ0EDA4LIARBAWsiBCAGQRBqai0AAEEoRw0NDAkLIARBAWsiBCAGQRBqai0AAEHbAEcNDAwIC0H9ACEFIARBAWsiBCAGQRBqai0AACIIQfsARg0JQap/IQMgCEHgAEcNDCAAIAkQjgIgAEEANgIwIAAgACgCFDYCBCAAIAAoAjgQ2QMNDAsgACgCKEHgAEYNBkHgACEDIARB/wFLDQoLIAZBEGogBGogAzoAACAEQQFqIQQMBQsgByAEQQJGciEHQTshBQwGCyAHQQJyIAcgBEECRhshB0GlfyEFDAULIAdBBHIhB0E9IQUMBAtBfyEICwJ/AkAgBUGAAWoiA0EVTUEAQQEgA3RBm4DAAXEbDQAgBUEpRiAFQd0ARnIgBUHVAGoiA0EHTUEAQQEgA3RBhwFxG3IgBUH9AEZyDQBBAQwBC0EAC0UNACAAIAAoAjggCGo2AjggABDuBA0ECyAJKAIAIQMLIANBg39HBEAgAyEFDAELQVkhBSAAQcMAEFENACAAQS0QUQ0AQYN/IQULIAAQDw0BIARBAUsNAAtBWSAAKAIQIABBwwAQURshAyACRQ0BIANBCiAAKAIEIAAoAhRGGyEDDAELQap/IQMLIAEEQCABIAc2AgALIAAgBhD6AiEAIAZBkAJqJABBfyADIAAbCxEAIAAgACgCsAIoAgA2ArACC04AIAEgACgCsAI2AgAgACABNgKwAiABQX82AhQgASAFNgIQIAEgBDYCDCABIAM2AgggASACNgIEIAAoArwBIQAgAUEANgIcIAEgADYCGAudBgEGfyAAKAIAIQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAw4HBAAAAAABAgMLIAEgAiABKALAAUEBENUDIgRBAEgNBQJAIARB/////wNNBEAgASgCdCIGIARBBHRqIggoAgQiByABKAK8ASIJRgRAIANBA0cNAiABLQBuQQFxDQIgBiAEQQR0aigCDEH4AHFBCEcNAgwJCyAIKAIMQfgAcUEYRw0HIAdBAmogCUYNAQwHCyABKAK8ASABKALwAUcNBgsgAEHNL0EAEBMMBwsgBSABIAJBAxDyAg8LIAEgAiABKALAAUEAENUDQQBODQIgASgCKARAAkAgASACELMCIgNFDQAgAy0ABEECcUUNACADKAIIIAEoArwBRw0AIAEoAiRBAUYNBAtBgICAgARBfyAFIAEgAhDzAhsPCyABIAIQhgIiAEEATg0IIAUgASACEFYiAEEASA0IAkAgAkHNAEcNACABKAJIRQ0AIAEgADYCmAELIAEoAnQgAEEEdGogASgCvAE2AgggAA8LEAEACyAFIAEgAkEAEPICIQAMBgsgAEHNL0EAEBMMAgsgASgCvAEhByADQQJLDQAgByABKALwAUcNACABIAIQ8ARBAEgNACAAQanOAEEAEBMMAQtBACEEIAEoAnwiBkEAIAZBAEobIQgDQAJAIAQgCEYEQEF/IQQMAQsCQCABKAJ0IARBBHRqIgYoAgAgAkcNACAGKAIEDQAgASAGKAIIIAcQ7wQNAQsgBEEBaiEEDAELCyAEQQBOBEAgAEG/0gBBABATDAELAkAgASgCKEUNACABIAIQswIiBEUNACABIAQoAgggBxDvBEUNACAAQaAwQQAQEwwBCyABKAIgRQ0CIAEoAiRBAUsNAiAHIAEoAvABRw0CIAUgASACEPMCIgANAQtBfw8LIAAgAC0ABEH5AXFBBkECIANBAkYbcjoABEGAgICABA8LIAUgASACQQEgA0EERkEBdCADQQNGGxDyAiIAQQBIDQAgASgCdCAAQQR0aiIBIAEoAgxBfHEgA0ECRnJBAnI2AgwgAA8LIAALswEBA38CQAJAIAAoAkAiAhClASIDQb8BRwRAIANBzQBHDQEgAigCmAIhAyACQX82ApgCIAIgAzYChAIgAEHNABAMIAAgARAaDwsgAigCmAIiAyADIAIoAoACIgRqKAABa0EBaiIDIARqIgQtAABB1gBHDQEgACgCACAEKAABEBEgAigCgAIgA2pBAWogACgCACABEBcQWyACQX82ApgCCw8LQbQgQbfjAEHTsAFBq80AEAAACzIAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFQsgAyAEQQdyEMwCC6kBAQJ/IwBBEGsiBCQAAkACQCAAIAEgAkEAQQAgBEEMahCVBSIBEAsNACAEKAIMIgVBAkcEQCADIAU2AgAgASECDAILIAAgAUHpACABQQAQEiICEAsNACADIAAgAhAsIgM2AgBCgICAgDAhAiADRQRAIAAgAUHAACABQQAQEiECCyAAIAEQCgwBCyAAIAEQCiADQQA2AgBCgICAgOAAIQILIARBEGokACACCyEAIAAgASACQgBC/////////w9CABB/IQEgACACEAogAQuQCQIIfwF+IwBBEGsiAyQAIAAgAEEQaiIHEI4CIAAgACgCOCIBNgI0IAMgATYCDCAAIAAoAhQ2AgQCfwJAA0ACQCAAIAE2AhggACAAKAIIIgU2AhRBIiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLAAAIgZB/wFxIgIOewAJCQkJCQkJCQYEBQUDCQkJCQkJCQkJCQkJCQkJCQkJBgkCCQ4JCQEJCQkLCQoJBwgMDAwMDAwMDAwJCQkJCQkJDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4JCQkJDgkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkLIAEgACgCPEkNDCAHQap/NgIADA4LQSchBCAAKAJMRQ0LCyAAIARBASABQQFqIAcgA0EMahCTA0UNDAwQCyABQQFqIAEgAS0AAUEKRhshAQsgAyABQQFqIgE2AgwgACAFQQFqNgIIDA0LIAAoAkxFDQcLIAMgAUEBaiIBNgIMDAsLIAAoAkxFDQUgAS0AASIEQS9GDQggBEEqRw0FIAFBAmohAQNAIAMgATYCDANAAkACQAJAAkAgAS0AACICQQprDgQBAgIDAAsgAkEqRwRAIAINAiABIAAoAjxJDQNB3RghAQwPCyABLQABQS9HDQIgAyABQQJqIgE2AgwMDwsgACAAKAIIQQFqNgIIDAELIAJBGHRBGHVBAE4NACABQQYgA0EMahBfIQIgAygCDCEBIAJBf0cNAQsLIAFBAWohAQwACwALIAEtAAEQREUNAwwECyAGQQBODQNBji8hAQwHCyABLQABEERFDQIMAQsgACgCTEUNASABLQABEERFDQELIAAoAgAgASADQQxqQQBBCiAAKAJMIgIbIAJBAEdBAnQQwwIiCRALDQYgAEGAfzYCECAAIAk3AyAMAgsgByACNgIAIAMgAUEBajYCDAwBCyADIAFBAWo2AgxBACEEIwBBkAFrIgEkACADKAIMIQUgAUGAATYCCCABIAFBEGoiBjYCDAJ/A0AgASgCCEEGayEIAkADQCAEIAZqIAI6AAAgBEEBaiEEIAUsAAAiAkEASA0BIAJB/wFxIgJBA3ZBHHFB4OABaigCACACdkEBcUUNASAFQQFqIQUgBCAISQ0AC0EAIAAoAgAgAUEMaiABQQhqIAFBEGoQjQUNAhogASgCDCEGDAELCyAAKAIAIAYgBBCtAwshAiABKAIMIgQgAUEQakcEQCAAKAIAIAQQGAsgAyAFNgIMIAFBkAFqJAAgAkUNBCAAQYN/NgIQIABCADcCJCAAIAI2AiALIAAgAygCDDYCOEEADAQLIAFBAmohAQNAIAMgATYCDANAAkACQCABLQAAIgIEQCACQQprDgQGAQEGAQsgASAAKAI8Tw0FDAELIAJBGHRBGHVBAE4NACABQQYgA0EMahBfIgJBfnFBqMAARgRAIAMoAgwhAQwFCyADKAIMIQEgAkF/Rw0BCwsgAUEBaiEBDAALAAsLIAAgAUEAEBMLIAdBqH82AgBBfwshACADQRBqJAAgAAsRACAAIAEgASACIANBAhCLBAusAQICfwJ+An8gAkUEQEKAgICAMCEGQQAMAQsgACgCECIDKQOAASEGIANCgICAgCA3A4ABQX8LIQNBfyEEAkAgACABQQYgAUEAEBIiBRALDQACQCAFEBANACAFECYNACAAIAUgAUEAQQAQNSEBAn8gAyACDQAaQX8gARALDQAaIAMgARAgDQAaIAAQKEF/CyEEIAAgARAKDAELIAMhBAsgAgRAIAAgBhCSAQsgBAsMACAAIAEgACABSBsLHQAgAEKAgICAcFoEfyAApy0ABUEEdkEBcQVBAAsLsAEBAX8jAEEQayIDJAACQAJAIAIQXARAIAEgAhB6NgIAQQEhAgwBCyAAKAIQIgAoAiwgAk0NAQJ/AkAgACgCOCACQQJ0aigCACIAKQIEQoCAgICAgICAQINCgICAgICAgIDAAFINACADQQxqIAAQ6AVFDQBBASADKAIMIgBBf0cNARoLQQAhAEEACyECIAEgADYCAAsgA0EQaiQAIAIPC0GmyABBt+MAQb8YQe4OEAAAC0UAIAAoAhAgASACEOUBIgEgAkVyRQRAIAAQxwFBAA8LIAMEQCADQQAgACgCECABEKIEIgAgAmsiAiAAIAJJGzYCAAsgAQv5AQIDfgJ/IwBBEGsiBSQAAn4gAb0iA0L///////////8AgyICQoCAgICAgIAIfUL/////////7/8AWARAIAJCPIYhBCACQgSIQoCAgICAgICAPHwMAQsgAkKAgICAgICA+P8AWgRAIANCPIYhBCADQgSIQoCAgICAgMD//wCEDAELIAJQBEBCAAwBCyAFIAJCACADp2dBIGogAkIgiKdnIAJCgICAgBBUGyIGQTFqEHEgBSkDACEEIAUpAwhCgICAgICAwACFQYz4ACAGa61CMIaECyECIAAgBDcDACAAIAIgA0KAgICAgICAgIB/g4Q3AwggBUEQaiQACyoBAX8jAEEQayIDJAAgAyACNgIMIAAgASACQfQCQQAQqQQaIANBEGokAAsNACAAQQAgAUEAEKAECxsAIAAgAUH/AXEQDiAAKAIEIQEgACACEBwgAQuLDAEHfyMAQSBrIgIkAAJAAkACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHm2ABBABATDAMLIAMoAmRFBEAgAEGgN0EAEBMMAwtBfyEDIAAQDw0IAkACQAJAAkAgACgCECIEQSlrDgQCAQECAAsgBEHdAEYgBEE6a0ECSXIgBEH9AEZyDQELIAAoAjANACAEQSpGBEAgABAPDQtBASEGCyAAIAEQuQFFDQEMCgsgAEEGEAwLIAAoAkAtAGwhASAGBEAgABA0IQQgABA0IQMgAEH+AEH9ACABQQNGGxAMIABBDhAMIABBBhAMIABBBhAMIAAgBBAdIABBhQEQDCABQQNHIgVFBEAgAEGLARAMCyAAQYEBEAwgAEHCABAMIABB6QAQGiAAQeoAQX8QGyEGIAAgAxAdIAAgBQR/QYkBBSAAQcEAEAwgAEHAABAaIABBiwEQDEGKAQsQDCAAQREQDCAAQeoAQX8QGyEFIABBDhAMIABB6wAgBBAbGiAAIAUQHSAAQQEQDCAAQQIQOCAAQasBEAwgAEHqAEF/EBshBCABQQNHIgVFBEAgAEGLARAMCyAAQYYBEAwgAEEAEGwgAEHqAEF/EBshByAFRQRAIABBiwEQDAsgAEGBARAMIABBwgAQDCAAQekAEBogAEHpACADEBsaIABBwQAQDCAAQcAAEBogACAHEB0gAEEPEAwgAEEPEAwgAEEPEAwgAEEBEPUCIAAgBBAdIABBhgEQDCAAQQEQbCAAQeoAQX8QGyEEIAFBA0ciAUUEQCAAQYsBEAwLIABBgQEQDCAAQcIAEAwgAEHpABAaIABB6QAgAxAbGiAAQesAIAYQGxogACAEEB0gAEGGARAMIABBAhBsIABB6gBBfxAbIQMgAUUEQCAAQYsBEAwLIAAgAxAdIABBMBAMQQAhAyAAQQAQGiAAQQQQbCAAIAYQHSAAQcEAEAwgAEHAABAaIABBDxAMIABBDxAMIABBDxAMDAkLIAFBA0YEQCAAQYsBEAwLIABBiAEQDCAAQekAQX8QGyEBIABBARD1AgwECyAAKAIgCyEGQX8hA0F/IQQCQAJ/AkAgAEGifyABQQRyIgciBRDMAw0AIAAoAhBBpn9GBEAgBUF7cSEIIAAQNCEFA0AgABAPDQIgAEEREAwgAEGwARAMIABB6QAgBRAbGiAAQQ4QDCAAQQggCBCxAg0CIAAoAhBBpn9GDQALIAAgBRAdC0EADAELQX8LDQAgACgCEEE/RgRAIAAQDw0BIABB6QBBfxAbIQUgABBgDQEgAEE6EC4NASAAQesAQX8QGyEIIAAgBRAdIAAgB0EBcRC5AQ0BIAAgCBAdC0EAIQQLIAQNBiAAKAIQIgRB+wBqIQMgBEE9RyADQQtLcUUEQCAAEA8NASAAIAJBHGogAkEYaiACQRRqIAJBEGpBACAEQT1HIAQQugFBAEgNASAAIAEQuQEEQCAAKAIAIAIoAhQQEQwCCyAEQT1GBEAgAigCHCIBQTxHDQcgAigCFCAGRw0GIAAgBhCqAQwGCyAAIANBwLQBai0AABAMIAIoAhwhAQwGC0EAIQMgBEHvAGpBAksNBiAAEA8NACAAIAJBHGogAkEYaiACQRRqIAJBEGogAkEMakEBIAQQugFBAEgNACAAQREQDCAEQZN/RgRAIABBsAEQDAsgAEHqAEHpACAEQZJ/RhtBfxAbIQMgAEEOEAwgACABELkBRQ0BIAAoAgAgAigCFBARC0F/IQMMBQsCQCACKAIcIgFBPEcNACACKAIUIAZHDQAgACAGEKoBCyACKAIMQQFrIgRBA08NASAAIARBFWpB/wFxEAwgACABIAIoAhggAigCFCACKAIQQQFBABDSASAAQesAQX8QGyEBIAAgAxAdIAIoAgwhAwNAIAMEQCAAQQ8QDCACIAIoAgxBAWsiAzYCDAwBCwsLIAAgARAdQQAhAwwDCxABAAtBPCEBC0EAIQMgACABIAIoAhggAigCFCACKAIQQQJBABDSAQsgAkEgaiQAIAMLqwUBBn9BAiEMAkACQAJAAkACQCAAKAJAIgkQpQEiCEHHAGsOBAQCAgEACyAIQcEARg0CIAhBvAFHBEAgCEG2AUcNAiAJKAKAAiAJKAKYAmoiCygAASEKIAsvAAUhCyAKQQhGDQIgCkE6RwRAIApB8QBGDQMgCkHNAEcNBQsgCS0AbkEBcUUNBCAAQZ/TAEEAEBNBfw8LQQEhDCAJKAKAAiAJKAKYAmoiBygAASEKIAcvAAUhCwwDC0EDIQwMAgsgB0G7f0YEQCAAQeDWAEEAEBNBfw8LIAdBfnFBlH9GBEAgAEGc2wBBABATQX8PCyAHQV9xQdsARgRAIABB+RpBABATQX8PCyAAQYHXAEEAEBNBfw8LQQEhDCAJKAKAAiAJKAKYAmooAAEhCgsgCSgCmAIhDUF/IQcgCUF/NgKYAiAJIA02AoQCAkACQCAGBEACQAJAAkACQCAIQccAaw4EAQMDAgALAkAgCEHBAEcEQCAIQbwBRg0BIAhBtgFHDQQgABA0IQcgAEG5ARAMIAAgChAaIAAgBxA4IAAgCxAWIAkgB0EBEHIaQTwhCCAAQTwQDAwHCyAAQcIAEAwgACAKEBpBwQAhCAwGCyAAQb0BEAwgACAKEBogACALEBZBvAEhCAwFCyAAQfEAEAwgAEETEAxBxwAhCAwDCyAAQfAAEAwgAEEUEAxBygAhCAwCCxABAAsCQAJAAkAgCEHHAGsOBAEEBAIACyAIQbYBRw0DIAAQNCEHIABBuQEQDCAAIAoQGiAAIAcQOCAAIAsQFiAJIAdBARByGkE8IQgMAwsgAEHxABAMQccAIQgMAgsgAEHwABAMQcoAIQgMAQsgACAIEAwLIAEgCDYCACACIAs2AgAgAyAKNgIAIAQgBzYCACAFBEAgBSAMNgIAC0EAC1oBA38jAEEQayIBJAACQCAAKAIQIgNBqn9GDQAgA0E7RwRAIANB/QBGDQEgACgCMA0BIAFBOzYCACAAQbX9ACABEBNBfyECDAELIAAQDyECCyABQRBqJAAgAgsZACABIAJBD3E6AAQgAUEIaiAAQdAAahBLC7UBAQV/IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDwiAhALDQELIAAgBUEIaiABEEIiByADEEIiCGogAqciBigCBCIEQf////8HcWogBEEfdhCrAw0AIAVBCGoiBCABIAcQnAIaIAQgBkEAIAYoAgRB/////wdxEFcaIAQgAyAIEJwCGiAAIAIQCiAEEDcMAQsgACACEApCgICAgOAACyECIAVBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1EAIABB/wBNBEAgAEEDdkH8////AXFB4OABaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELcEBH9BAQUgAEHggQJB4IYCQRQQ4AJBAEcLQQBHcgtTAQF/IAFCgICAgHBaBH8gAacvAQYiAkEpRgRAAn9BACABQSkQPyICRQ0AGiACLQARBEAgABDKAkF/DAELIAAgAikDABDAAQsPCyACQQJGBUEACwvJAgIBfgJ/IwBBEGsiBSQAAkAgAUKAgICAcFQEQCABIQMMAQsgAkFvcSEEAkACQAJAIAJBEHENACAAIAFBwgEgAUEAEBIiAxALDQEgAxAQDQAgAxAmDQAgBSAAQcYAQRYgBEEBRhtByAAgBBsQMTcDCCAAIAMgAUEBIAVBCGoQNSEDIAAgBSkDCBAKIAMQCw0BIAAgARAKIANCgICAgHBUDQMgACADEAogAEH0yABBABAUDAILIARBAEchBEEAIQIDQCACQQJHBEAgACABQTdBOSACIARGGyABQQAQEiIDEAsNAgJAIAAgAxA6RQ0AIAAgAyABQQBBABA1IgMQCw0DIANC/////29WDQAgACABEAoMBQsgACADEAogAkEBaiECDAELCyAAQfTIAEEAEBQL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zQELIAkgB0EIayIIKQMAEAoMygELIAkgB0EQayIGKQMAEAogBiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAogBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABANNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA03AwAgByAHQQhrKQMAEA03AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDTcDACAHIAdBEGspAwAQDTcDCCAHIAdBCGspAwAQDTcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABANNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDTcDACAHQQhqIQgMwwELIAcgB0EIayIIKQMAIic3AwAgB0EQayIGKQMAIQEgBiAHQRhrIgYpAwA3AwAgCCABNwMAIAYgJxANNwMAIAdBCGohCAzCAQsgByAHQQhrIggpAwAiJzcDACAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAIIAE3AwAgBiAHQSBrIgYpAwA3AwAgBiAnEA03AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBCGsiBikDACEBIAYgJzcDACAIIAE3AwAMvgELIAdBIGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBEGsiBikDACEBIAYgB0EIayIGKQMANwMAIAggATcDACAGICc3AwAMvQELIAdBKGsiBikDACEnIAYgB0EgayIIKQMANwMAIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAggATcDACAGIAdBCGsiBikDADcDACAGICc3AwAMvAELIAdBCGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBGGsiBikDACEBIAYgJzcDACAIIAE3AwAMuwELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgJzcDACAIIAE3AwAMugELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgB0EoayIGKQMANwMAIAgg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HgwoCyAGQQJqIQsgFCAGLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyATIAEQDTcDGCAJICJBjgEQkQINLCAJIAggEykDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIg0kACAJIA1BDGogB0EIayIKKQMAEMQBIQwgCkKAgICAMCANNQIMQv////8PhSAMGzcDACANQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICendK03AwAMJwsgCSAHQaABEMcCRQ0mDCoLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKAn4gAacgJ6d2IgZBAE4EQCAGrQwBCyAGuBAVCzcDAAwmCyMAQRBrIg0kACAHQQhrIgopAwAhAQJ/AkAgCSANQQxqIAdBEGsiDCkDABDpAwRAIAkgARAKDAELIAkgDUEIaiABEOkDDQAgDAJ+IA0oAgwgDSgCCHYiCkEATgRAIAqtDAELIAq4EBULNwMAQQAMAQsgDEKAgICAMDcDACAKQoCAgIAwNwMAQX8LIQogDUEQaiQAIApFDSUMKQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6d1rTcDAAwlCyAJIAdBoQEQxwJFDSQMKAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQxwJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMcCRQ0iDCYLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDHAkUNIQwlCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlwNFDSAMJAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dMrUKAgICAEIQ3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ACACQQFBACACKAIYIAIoAhQQ1gENCgwMCyACQSkQLg0JCyACQewAIAAQGxogAhCDARogAigCQCAIQRBqQQBBf0F/QQEQqAEgCCADNgIkIAIQ9gINCCACKAJAEKcBIAIQ7gEgAhDuASACEPQCBEAgAkEOEAwgAkEGEAwgAkHtACADEBsaIAJBDhAMIAJB6wAgBBAbGgsgACEBCyACIAEQHSACQe0AIAMQGxogAkEvEAwgAiADEB0gAigCEEFERgRAIAIQDw0IQQAhACACKAJAIAhBEGpBAEF/QX9BAhCoASACKAJAIgEoAqQBQQBOBEAgAigCACABQdEAEFYiAEEASA0JIAJB2AAQDCACIAIoAkAvAaQBEBYgAkHZABAMIAIgAEH//wNxEBYgAhDUAQsgAhD2Ag0IIAIoAkAiASgCpAFBAE4EfyACQdgAEAwgAiAAQf//A3EQFiACQdkAEAwgAiACKAJALwGkARAWIAIoAkAFIAELEKcBCyACQe4AEAwgAiAEEB0MCAsgACEDCyACEA8NBSACQQAgA0EAENgDDQULIAIgAigCQCgCvAEgBhC0AgsgAkE7EC4NAyACEDQhBCACEDQhACACEDQhAyACEDQhBSACKAJAIAhBEGogCyAFIABBABCoASADIQEgAigCEEE7RwRAIAIgBBAdIAIQlwENBCACQekAIAUQGxogBCEBCyACQTsQLg0DAkAgAigCEEEpRgRAIAggATYCHEEAIQQgASEADAELIAJB6wAgAxAbGiACKAJAKAKEAiEEIAIgABAdIAIQlwENBCACQQ4QDCABIANGDQAgAkHrACABEBsaCyACQSkQLg0DIAIoAkAoAoQCIQcgAiADEB0gAhC2Ag0DIAIgAigCQCgCvAEgBhC0AgJAIAEgA0YgACABRnJFBEAgAigCQCIBQYACaiIGIAEoAoQCIgkgByAEayIDahDMARogBiABKAKAAiAEaiADEIgBGiABKAKAAiAEakGxASADEEUaIAIoAkAiAyABKAKEAkEFazYCmAIgACADKAKsAiIBIAAgAUobIQYgCSAEayEJA0AgACAGRg0CIAMoAqQCIABBFGxqIgooAgQiASAESCABIAdOckUEQCAKIAEgCWo2AgQLIABBAWohAAwACwALIAJB6wAgABAbGgsgAiAFEB0gAigCQBCnAQsgAhDuAQwDCyAB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AQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDCAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACAFEAoLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKAECw4AIAEgACgCEEErEOYCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QxAELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3AEPCyAAIAIQngMiA0UEQEF/DwsgACABIANBgIABENwBIQQgACADEBEgBAtKAQF/AkAgACABIAAoAgRB/////wdxIgIgASgCBEH/////B3EiARCxARDlBSIADQBBACEAIAEgAkYNAEF/QQEgASACSxshAAsgAAsgACAAIAEgAkEATgR+IAKtBSACuBAVCyADQYCAARDfAQvHCgIHfwF+IwBBIGsiCSQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAIAFCIIinQQFqDgUDAgIAAQILIAAgAxAKIAAgAkGfPRDGAUF/IQUMCgsgACADEAog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EGogBUEBdBAjGiADIAMpAgQiCSAEKQIEfEL/////B4MgCUKAgICAeIOENwIEDAILIANBEGoiBSAGaiAEQRBqIAcQIxogAyADKQIEIgkgBCkCBHxC/////weDIgogCUKAgICAeIOENwIEIAUgCqdqQQA6AAAMAQsCfgJAAkAgBCkCBCIJp0H/////B3EgAykCBCIKp0H/////B3FqIgZBgICAgARPBEAgAEGTwwBBABBNDAELIAAgBiAJIAqEpyIHQR92EPwBIgUNAQtCgICAgOAADAELAkAgB0EATgRAIAVBEGogA0EQaiADKAIEQf////8HcRAjIgcgAygCBEH/////B3FqIARBEGogBCgCBEH/////B3EQIxogBiAHakEAOgAADAELIAVBEGoiBiADIAMoAgRB/////wdxEJQFIAYgAygCBEEBdGogBCAEKAIEQf////8HcRCUBQsgBa1CgICAgJB/hAshCSAAIAEQCgwBCyABIQkLIAAgAhAKIAkLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDgAQsLACAAQZ8JQQAQFAuBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEnwgEoUhEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCABgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAE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k8MAQQAQTQwBCyABIAAoAgxBA2xBAm0QSkH/////AxCxASEBIAAoAhAiBCACQYACSHJFBEAgACABEO4DIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahC0ASICDQELIAAQigMMAQsgACgCECEDIAUoAgwhBCAAIAI2AgQgACAEIAN2IAFqQf////8DELEBNgIMQQAhAwsgBUEQaiQAIAMLgQECAn8BfgJAIAEpAgQiBEL//////////79/VgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBzvUAQbfjAEH4FEGtDhAAAAsgAAvzBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ1QIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDlASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJBH3UgAkH/////B3EgAkEfdnRqQRFqEOYBIgJFBEBBACEDDAQLIAJBATYCACACIAIpAgRC/////3eDIAEpAgRCgICAgAiDhCIJNwIE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cFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCFASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJgEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEKABIgJBAEgNACACRQ0BIABB6iJBABAUC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD8ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECMaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQVCIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCaBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQZLiAEG34wBBjixByzoQAAALiAICAX4CfyMAQTBrIgQkAEHD5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBleMAIAQQVRoMCQsgAEEDQQIgAacbEDEhAwwJCyAAQQEQMSEDDAgLIABBxQAQMSEDDAcLIAAgAUEAEJwDIgEQCwRAIAEhAwwHCyAAIAEgAhCfBCEDIAAgARAKDAYLIAJFDQELIAEQDSEDDAQLIABBvMMAQQAQFAwDCyAAIAEQSUEKQQBBABDLAiEDDAILQbDmACEFCyAAIAUQdCEDCyAEQTBqJAAgAwusBAIJfwF+AkACQAJAAkAgAkKAgICAcINCgICAgJB/UgRAIAAgAhArIgIQC0UNAQwCCyACEA0hAgsgAqciCykCBCINp0H/////B3EhBgJAIA1CgICAgAiDUARAIAtBEGohBUEAIQMDQCAEIAZGRQRAIAMgBCAFai0AAEEHdmohAyAEQQFqIQQMAQsLIANFBEAgBSEJIAENBAwFCyAAIAMgBmpBABD8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ACgCACAQaiIGIAJqIAYgAyAQaxDpASAAKAIAIgYgEGogAyAGaiACECMaDAALAAsJACABIAIQ8QULlQEBA34gAb0iAkL///////////8AgyEDIAC9IgRC////////////AINCgYCAgICAgPj/AFoEQCADQoGAgICAgID4/wBUDwsCf0F/IANCgICAgICAgPj/AFYgACABY3INABpBASAAIAFkDQAaQQAgAEQAAAAAAAAAAGINABogBEIAUwRAIAJCP4enQX9zDwsgAkI/iKcLC6MBAQF+AkACQCACRQRAIABBLxAxIQQgARAQIQIMAQsgAykDACEEAn4CQCABEBAiAkUNACAEEPYDRQ0AIABB0PkAIAAgACgCECAEpxDVAhAxQcL5ABC9AQwBCyAAIAQQKwsiBBALDQELIAINACAAIAFBBRBtIgEQC0UEQCAAIAEgBBDNASAAIAFBMCAEpykCBEL/////B4NBABAZGgsgASEECyAEC0oCAX8BfkKAgICA4AAhBCAAIAEgAhCZASIDBH4gAxCYAQRAIAJFBEBCAA8LIAAQc0KAgICA4AAPCyADKAIgNQIQBUKAgICA4AALCyoAIAAgASACEJkBIgBFBEBCgICAgOAADwsgACgCIDUCDEKAgICAcIQQDQtGAQF/AkAgACgCCCACaiIDIAAoAgxKBEAgACADIAEQ1AINAQsDQCACQQBMBEBBAA8LIAJBAWshAiAAIAEQlAFFDQALC0F/C3gBBX8gASgCBEH/////B3EiA0UEQCACDwsgACgCBEH/////B3EhBSADQQFrIQYgAUEAEC8hBwJAA0AgAiADaiAFSg0BIAAgByACENcBIgRBAEggAyAEaiAFSnINASAAIAEgBEEBaiICQQEgBhDCAw0ACyAEDwtBfwuCAQECfwJAAkAgACABEIIEIgNBAEgNACADRQ0BIAAgAUHtACABQQAQEiIBEAsNAEGJHCECAkAgARAQDQAgARAmDQAgACABEDwiARALDQFBACECIAGnQecAQQAQ1wEhAyAAIAEQCiADQQBODQJB3sUAIQILIAAgAkEAEBQLQX8hAgsgAgtcAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQc87QQAQFEKAgICA4AAhAQsgAQsQAEG3/gAgAEELEKQCQQBHC10BAn9Bqv4AIQMCQAJAIAEoAgRB/////wdxIgQgAkwNACABIAIQL0ElRw0AQbEZIQMgAkECaiAETg0AIAEgAkEBakECEMMDIgJBAE4NAQsgACADEMQDQX8hAgsgAgtUACMAQRBrIgIkACAAIAJBCGogAykDABBHBH5CgICAgOAABSACKQMIQoCAgICAgID4/wCDQoCAgICAgID4/wBSrUKAgICAEIQLIQEgAkEQaiQAIAELVAAjAEEQayICJAAgACACQQhqIAMpAwAQRwR+QoCAgIDgAAUgAikDCEL///////////8Ag0KAgICAgICA+P8AVq1CgICAgBCECyEBIAJBEGokACABC/gCAgN/A34jAEEwayIIJAAgA0IAIANCAFUbIQ0gBUEBayEKIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQigEiCUEASA0AAkAgCUUNACAGEBBFBEAgCCAIKQMoNwMAIAMhCyADQoCAgIAIWgRAIAO5EBUhCwsgCCACNwMQIAggCzcDCCAIIAAgBiAHQQMgCBAiIgs3AyggACAIKQMAEAogACAIKQMIEAogCxALDQILAkACQAJAIAUNACAAIAgpAygiCxDAASIJQQBIDQEgCUUNACAAIAhBIGogCxBAQQBIDQEgACABIAsgCCkDICAEIApCgICAgDBCgICAgDAQ0gQiBEIAUw0BIAAgCxAKDAMLIARC/////////w9TDQEgAEGEwwBBABAUIAgpAyghCwsgACALEAoMAgsgACABIAQgCCkDKBBuQQBIDQEgBEIBfCEECyADQgF8IQMMAQsLIAhBMGokACAMCwwAIABCACAAQgBVGwsoAAJAIAEQEEUEQCABECZFDQELIAAgARA8DwsgACABQThBAEEAELoCC6MCAgZ/AX4jAEEwayICJAACQAJAIAMpAwAiARAgRQ0AQoCAgIDgACELIAAgARCYBCIDQQBIDQEgA0UEQCAAQdbKAEEAEBQMAgsgACACQSxqIAJBKGogAaciCUEDEJABDQEgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAGIANBA3RqKAIEIQhBgIIBIQUCQCAERQ0AIAAgAkEIaiAJIAgQUyIKQQBIDQMgCkUNACAC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wP8AgyAAQjiGhCAAQhiGQoCAgICA4D+DIABCCIZCgICAgPAfg4SEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEC10BBH8gASEDAkADQCACIANNIARBBEtyDQEgAy0AACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkGAAXENAAsgACAFNgIAIAMgAWsPCyAAQQA2AgBBfwteAQF/AkAgAS0AB0GAAXEEQCAAIAFBEGogAkEBdBAjGgwBCyACQQAgAkEAShshAiABQRBqIQEDQCACIANGDQEgACADQQF0aiABIANqLQAAOwEAIANBAWohAwwACwALC7ABAQJ/IwBBEGsiBiQAAkACQCACECBFDQAgAqciBy8BBkEMRw0AIActAClBDEcNACAAIAEgAyADBH8gBAUgBkKAgICAMDcDCCAGQQhqCyAFIAcuASogBygCJBESACECDAELAkAgACACIAEgAyAEECIiAhALRQRAIAIQIA0BIAAgAhAKIABBgh1BABAUCyAFQQA2AgBCgICAgOAAIQIMAQsgBUECNgIACyAGQRBqJAAgAgsUAQF+IAAgARApIQIgACABEAogAgscAQF/IABCgICAgHBaBH8gAKctAAVBB3YFQQALCw0AIAAgASACQQAQ3QELQwACfCABvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh/IACZRAAAAAAAAPA/YQ0BGgsgACABEIEGCwt7AQF+AkACfiAEQQRxBEBBJiECIAAgARBhDAELQSUhAiAAIAEQKQsiARALDQAgACACEKIBIgUQCw0AIABBEBAtIgIEQCACQQA2AgwgAiAEQQNxNgIIIAIgATcDACAFIAIQiwEgBQ8LIAAgBRAKCyAAIAEQCkKAgICA4AALlQECAn4BfyAAIAEQMSEDAkAgARBcDQBBACAAKAIQKAI4IAFBAnRqKAIAKQIEIgJCgICAgICAgIBAg0KAgICAgICAgIB/UiACQoCAgIDw////P4NQIAJC//////////+/f1ZxGw0AIAKnQX9zQR92QQEgAkL/////B4NQGyEECyAEBH4gAEH95gAgA0H75gAQvQEFIAMLC6cBAQV/IACnIgMoAhAiASABKAIYQX9zQQJ0QaR+cmooAgAhAiABECchAQNA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gICAMCEFAkACQCAAIAJBCGogACABECkiARBADQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQYCQAJAAkACQCABIAJBBGogAhCNAkUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQUgAyADQQhqIAhBA3RBCGsQ6QEMAgsCQCAEBEAgACABQgAQYiIFEAsNBiAAIAFCAEIBIAZBARCCA0UNAQwGCyAAIAEgBhBiIgUQCw0FCyAAIAEgBhCTAkEATg0CDAQLIAhBA3QgA2pBCGspAwAhBQsgCSAJKAIoQQFrNgIoCyAHQoGAgIAIVA0AIAa5EBUhBgsgACABQTAgBhBIQQBODQELIAAgBRAKQoCAgIDgACEFCyAAIAEQCiACQRBqJAAgBQsQACAAIAMpAwBBESAEEIEDC94EAgV+A38jAEEQayILJAACfgJAAkACQCAAIAEQKSIGQoCAgIBwVA0AIAanIgovAQZBAkcNACAKLQAFQQlxQQlHDQAgCigCEBAnLQADQQhxRQ0AIAooAhQpAwAiAUL/////D1YNACALIAFCIIZCIIciBzcDCCAHIAo1AihSDQAgByACrHwiBUL/////B1UNACAKNQIgIAVTBEAgACAKIAWnENMFDQMLAn8gBEUgAkEATHJFBEAgCigCJCIEIAJBA3RqIAQgAadBA3QQ6QFBAAwBCyABpwshDEEAIQQgAkEAIAJBAEobIQIDQCACIARGRQRAIAMgBEEDdGopAwAQDSEBIAooAiQgBCAMakEDdGogATcDACAEQQFqIQQMAQsLIAogBT4CKCAKKAIUIAVC/////w+DNwMAIAVCgICAgAh8IQEMAQsgACALQQhqIAYQQA0BIAspAwgiASACrCIIfCIFQoCAgICAgIAQWQRAIABBo8MAQQAQFAwCCwJAIARFIAJBAExyRQRAQgAhByAAIAYgCEIAIAFBfxCCAw0DDAELIAEhBwsgAkEAIAJBAEobrSEIQgAhAQNAIAEgCFIEQCABIAd8IQkgAachAiABQgF8IQEgACAGIAkgAyACQQN0aikDABANEI8BQQBODQEMAwsLIAAgBkEwIAVCgICAgAh8IgFC/////w9YBH4gBUL/////D4MFIAW5EBULEEhBAEgNAQsgACAGEAogBUL/////D4MgAUL/////D1gNARogBbkQFQwBCyAAIAYQCkKAgICA4AALIQEgC0EQaiQAIAELPAAgAUEAQdAAEEUiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQkEBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB1DQAgACABEBcPCyABQQFqIQEMAQsLEAEACyAAIAEQyAELFwAgACAAKQPAASABIAIgA0EAQX8QtwULNQEBfyAAKALsASIHRQRAIABB0t0AQQAQFEKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNQALxgICAn4Cf0KAgICAMCECAkACQCABKQJUIgNCGIZCOIenDQAgA0IghkI4h6cEQCADQhCGQjiHp0UNASAAIAEpA2AQDRCSAUKAgICA4AAPCyABIANC/////49gg0KAgICAEIQ3AlQDQCABKAIUIARKBEAgASgCECAEQQN0aigCBCIFKQJUQhiGQjiHp0UEQCAAIAUQuAUiAhALDQQgACACEAoLIARBAWohBAwBCwsCQCABKAJQIgQEQEKAgICA4ABCgICAgDAgACABIAQRAgBBAEgbIQIMAQsgACABKQNIQoCAgIAwQQBBABA1IQIgAUKAgICAMDcDSAsgAhALBEAgAUEBOgBZIAEgACgCECkDgAEQDTcDYAsgASABKQJUQv///4eAYINCgICACIQ3AlQLIAIPCyABIAEpAlRC/////49ggzcCVCACC8AFAgd/AX4jAEEQayIFJAACQCABKQJUIglCKIZCOIenDQAgASAJQv//g3iDQoCABIQ3AlQDQAJAIAEoAhQgA0wEQEEAIQMDQCABKAIgIANKBEACQCABKAIcIgQgA0EUbGoiAigCCEEBRw0AIAIoAgwiB0H9AEYNACAAIAVBCGogBUEMaiABKAIQIAIoAgBBA3RqKAIEIAcQ7AMiAkUNACAAIAIgASAEIANBFGxqKAIQEOsDDAQLIANBAWohAwwBCwtBACECIAEoAlANAyABKAJIKAIkIQhBACEDQQAhBANAAkAgASgCOCAETARAA0AgAyABKAIgTg0CIAEoAhwgA0EUbGoiAigCCEUEQCAIIAIoAgBBAnRqKAIAIgQgBCgCAEEBajYCACACIAQ2AgQLIANBAWohAwwACwALIAEoAhAgASgCNCAEQQxsaiIHKAIIQQN0aigCBCECAkACQCAHKAIEIgZB/QBGBEAgACACEIkDIgkQC0UNAQwGCyAAIAVBCGogBUEMaiACIAYQ7AMiBgRAIAAgBiACIAcoAgQQ6wMMBgsCQCAFKAIMIgYoAgxB/QBGBEAgACAFKAIIKAIQIAYoAgBBA3RqKAIEEIkDIgkQCw0HIABBARDmAyICRQRAIAAgCRAKDAgLIAAgAkEYaiAJEB4MAQsgBigCBCICRQRAIAUoAggoAkgoAiQgBigCAEECdGooAgAhAgsgAiACKAIAQQFqNgIACyAIIAcoAgBBAnRqIAI2AgAMAQsgACAIIAcoAgBBAnRqKAIAQRhqIAkQHgsgBEEBaiEEDAELC0F/IQIgACABKQNIQoGAgIAQQQBBABAiIgkQCw0DIAAgCRAKQQAhAgwDCyADQQN0IQRBfyECIANBAWohAyAAIAQgASgCEGooAgQQuQVBAE4NAQwCCwtBfyECCyAFQRBqJAAgAgv/AgIGfwJ+AkAgASkCVEIwhkI4h6cNAAJAIAEoAlAEQANAIAIgASgCIE4NAiABKAIcIAJBFGxqIgMoAghFBEAgAEEAEOYDIgRFBEBBfw8LIAMgBDYCBAsgAkEBaiECDAALAAtBfyEEIAEpA0ghCEF/IQcgACAAKQMwQQ0QUCIJEAtFBEAgCaciAyAIpyICNgIgIAIgAigCAEEBajYCACADQgA3AiQCQAJAAkAgAigCPCIFRQ0AIAAgBUECdBBqIgVFDQEgAyAFNgIkQQAhAwNAIAMgAigCPE4NASACKAIkIANBA3RqLQAAIgZBAXEEQCAAIAZBA3ZBAXEQ5gMiBkUNAyAFIANBAnRqIAY2AgALIANBAWohAwwACwALIAEgCTcDSEEAIQcMAQsgCSEICyAAIAgQCgsgBw0BCyABQQE6AFVBACECA0AgASgCFCACTARAQQAPCyACQQN0IQNBfyEEIAJBAWohAiAAIAMgASgCEGooAgQQugVBAE4NAAsLIAQLiwEAAkACQAJAAkACQCABQiCIp0EDag4CAQACCyAAIAAgASADIAQQjAQgAkEAQQAQNQ8LIAAgARAKAkAgACABpyIDELoFQQBIDQAgACADELkFQQBIDQAgACADELgFIgEQC0UNAwsgAEECEKUEDAELIAAgARAKIABBtN4AQQAQFAtCgICAgOAAIQELIAELRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR/IAJBCGsFIAJBBGohAgwBCwsLqAMBBH8jAEEQayIFJAACfyAAKAIQIgYoAqgBIgNFBEACfyACLQAAQS5HBEAgACACIAIQQhCkAwwBCyABEP4FIQMgACACEEIgAyABa0EAIAMbIgNqQQJqEC0iBAR/IAMgBCABIAMQIyIBakEAOgAAAkADQAJAIAItAABBLkcNAEECIQMCQAJAIAItAAFBLmsOAgABAgsgAi0AAkEvRw0BIAEtAABFDQMgARD+BSIDQQFqIAEgAxsiA0GL9gAQrARFDQEgA0GK9gAQrARFDQEgAyABIANJa0EAOgAAQQMhAwsgAiADaiECDAELCyABLQAARQ0AIAEQQiABakEvOwAACyABEEIgAWogAhCABiABBUEACwsMAQsgACABIAIgBigCsAEgAxELAAshA0EAIQICQCADRQ0AAkAgACADEMgBIgRFDQAgACAEELwFIgEEQCAAIAMQGCAAIAQQESABIQIMAgsgACAEEBEgBigCrAEiAUUEQCAFIAM2AgAgAEH/+wAgBRDRAgwBCyAAIAMgBigCsAEgAREBACECCyAAIAMQGAsgBUEQaiQAIAILbwIDfwF+AkAgACgCECgCjAEiAkUNAANAIAFBAEoEQCABQQFrIQEgAigCACICDQEMAgsLIAIpAwgiBEKAgICAcFQNACAEpyIBLwEGEPcBRQ0AIAEoAiAiAS0AEkEEcUUNACAAIAEoAkAQFyEDCyADC1IBBH8gACgCICICQQAgAkEAShshBEEAIQIDQAJAIAIgBEcEfyAAKAIcIgUgAkEUbGooAhAgAUcNASAFIAJBFGxqBUEACw8LIAJBAWohAgwACwAL2AEBBn9BfyECIAEgAUEBa3FFBEAgACABQQJ0EJsCIgUEfyABQf////8DakH/////A3EhBgNAIAMgACgCJE9FBEAgACgCNCADQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiBCgCDCEHIAQgBSAGIAQoAghxQQJ0aiIEKAIANgIMIAQgAjYCACAHIQIMAQsLIANBAWoh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ACAIIAsQZEEAIQkMAQsgACAIIAsQZAsgB0EwaiQAIAkLUwECfwJAAkAgARAgRQ0AIAEQnAUNAEF/IQMgACACEDkiBEUNASAAIAQQmwUhAiAAIAQQESACEAsNASAAIAFBNiACQQEQGUEASA0BC0EAIQMLIAMLMgACQCACRQ0AIAEQIEUNACABEJwFDQAgACABQTYgACACEDFBARAZQQBODQBBfw8LQQALaAEBfyAAKAIQIQICQCABEFxFBEAgAigCLCABTQ0BIAIoAjggAUECdGooAgAiAa1CgICAgJB/hBANGiAAIAFBBBD1Aw8LQYf3AEG34wBBzhdBhDwQAAALQZDIAEG34wBBzxdBhDwQAAAL1gEBBH8gACgCyAEiBigCECIEIAQoAhggAXFBf3NBAnRqKAIAIQUgBBAnIQQCQANAIAVFDQEgASAEIAVBAWsiB0EDdGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgB0EDdGohBAJAIANBAUYNACAEKQMAEIQBBEAgACACEAogACAFKAIEEOABQX8PCyAFLQADQQhxDQAgACACEAogAEGAgAEgARDeAQ8LIAAgBCACEB5BAA8LIAAgACkDwAEgASACQYCABkGAgAIgABD6ARsQlgILfQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB/UXFFBEAgAEHP3gBBABAUDAELIAAgAUESEG0iARALDQAgAaciBCACPgIgIAQgAz4CJCAAIAFB1QBCAEECEBkaIAEPCyAAIAMQCiAAIAIQCkKAgICA4AALDQAgACABQeP6ABCWAwvSAQMBfgF8AX8DQAJAQX8hBQJAAkACQCACEFQOCAAAAAACAgMBAgsgAkIghkIghyEDQQAhBQwCC0EAIQUgAhBJIgS9Qv///////////wCDQoCAgICAgID4/wBWDQFCgICAgICAgICAfyEDIAREAAAAAAAA4MNjDQFC////////////ACEDIAREAAAAAAAA4ENkDQEgBJlEAAAAAAAA4ENjBEAgBLAhAwwCC0KAgICAgICAgIB/IQMMAQsgACACEJ4BIgIQC0UNAQsLIAEgAzcDACAFC7wBAgJ/AXwDQAJAQX8hBAJAAkACQCACEFQOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAIQSSIF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IAAgCCAKrSAGQYCAARCrAUEASA0BIApBAWohCgwACwALIAAgCRAKIAAgARAKIAAgCBAKQoCAgIDgACEICyALQRBqJAAgCCEBIAAgBRAKIAEQCw0CIAMgAzUCBCIFNwMIDAELIAAgA0EIaiAGEEANASAGEA0hASADKQMIIQULIABCgICAgDAgBSAEQeWKAWoxAACGEIwDIgYQCw0AIAAgByAGQgAgBRDzAw0AQQAhBANAIAcgBK0gBVkNAhogACABIAQQeSIGEAsNASAAIAcgBCAGEJUCIQogBEEBaiEEIApBAE4NAAsLIAAgARAKIAchAUKAgICA4AALIQUgACABEAoLIANBEGokACAFIQcMAwsgAykDABANIQUMAQsgABBzDAELAkAgACABIAQQbSIHEAsEQCAAIAUQCgwBCyAAIAcgBSAGIAgQ8wNFDQEgACAHEAoLQoCAgIDgACEHCyACQRBqJAAgBwvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxBxIAQgACACQYH4ACAFaxCgAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwsPACAAIAEgAkEAQQMQgQILrw8CBX8OfiMAQdACayIFJAAgBEL///////8/gyELIAJC////////P4MhCiACIASFQoCAgICAgICAgH+DIQ0gBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCENIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDQwDCyANQoCAgICAgMD//wCEIQ1CACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQBEBCgICAgICA4P//ACANIAIgA4RQGyENQgAhAQwCCyACIAOEUARAIA1CgICAgICAwP//AIQhDUIAIQEMAgsgDEL///////8/WARAIAVBwAJqIAEgCiABIAogClAiBht5IAZBBnStfKciBkEPaxBxQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQcSAGIAdqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBwIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEHAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQcCAFQfABaiAEQgBCACAFKQOIAn1CABBwIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEHAgBUHQAWogBEIAQgAgBSkD6AF9QgAQcCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBwIAVBsAFqIARCAEIAIAUpA8gBfUIAEHAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQcCAFQZABaiADQg+GQgAgAkIAEHAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDCAFKQOYAXwiBCAMVK18IARCAVatfH1CABBwIAVBgAFqQgEgBH1C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QiB9IhVBACAOa61VBEBByK4EQcQANgIAIANBoAFqIAAQggEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhFyADKQOIAQwBCyAOQeIBa6wgFVcEQCAFQQBOBEADQCADQaADaiAXIBlCAEKAgICAgIDA/79/EHsgFyAZQoCAgICAgID/PxCnBCECIANBkANqIBcgGSAXIAMpA6ADIAJBAEgiBhsgGSADKQOoAyAGGxB7IBVCAX0hFSADKQOYAyEZIAMpA5ADIRcgBUEBdCACQQBOciIFQQBODQALCwJ+IBUgDqx9QiB8IhanIgJBACACQQBKGyANIBYgDa1TGyICQfEATgRAIANBgANqIAAQggEgAykDiAMhGCADKQOAAyEaQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgAmsQ6AEQtQEgA0HQAmogABCCASADQfACaiADKQPgAiADKQPoAiADKQPQAiIaIAMpA9gCIhgQ/QUgAykD+AIhGyADKQPwAgshFiADQcACaiAFIAVBAXFFIBcgGUIAQgAQ/wFBAEcgAkEgSHFxIgBqEKECIANBsAJqIBogGCADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBYgGxB7IANBoAJqIBogGEIAIBcgABtCACAZIAAbEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeyADQfABaiADKQOAAiADKQOIAiAWIBsQpgQgAykD8AEiFiADKQP4ASIYQgBCABD/AUUEQEHIrgRBxAA2AgALIANB4AFqIBYgGCAVpxD8BSADKQPgASEXIAMpA+gBDAELQciuBEHEADYCACADQdABaiAAEIIBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhFyADKQO4AQshFSAMIBc3AxAgDCAVNwMYIANBsANqJAAgDCkDGCEVIAwpAxAhFgwFCyACKQNwQgBTDQAgAiACKAIEQQFrNgIECyACIQUgAyECIAAhCEEAIQMjAEGQxgBrIgEkAEEAIA0gDmoiE2shFAJAAn8DQCACQTBHBEACQCACQS5HDQQgBSgC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AAJ/IARC////////P4MhCQJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAmEUBsMAgsgAyAJhFALCyEHIAJCMIinIghB//8BcSIGQf//AUYNACAHDQELIAVBEGogASACIAMgBBAyIAUgBSkDECIBIAUpAxgiAiABIAIQ7wUgBSkDCCECIAUpAwAhBAwBCyABIAJC////////P4MgBq1CMIaEIgogAyAEQv///////z+DIARCMIinQf//AXEiB61CMIaEIgkQ/wFBAEwEQCABIAogAyAJEP8BBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQMiAFKQN4IQIgBSkDcCEEDAELIAYEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEDIgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAyIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCEJIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAl9IAMgBFatfSILQgBZBEAgCyAEIAN9IgSEUARAIAVBIGogASACQgBCABAyIAUpAyghAiAFKQMgIQQMBQsgC0IBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAGQQFrIgYgB0oNAAsgByEGCwJAIAogCX0gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEDIgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgBkEBayEGIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhByAGQQBMBEAgBUFAayAEIAlC////////P4MgBkH4AGogB3KtQjCGhEIAQoCAgICAgMDDPxAyIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAyIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsg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ayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEK4EDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC4kEAgR+An8CQCABvSIEQgGGIgNQIARC////////////AINCgICAgICAgPj/AFZyRQRAIAC9IgVCNIinQf8PcSIGQf8PRw0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB/w9xIQcCfiAGRQRAQQAhBiAFQgyGIgJCAFkEQANAIAZBAWshBiACQgGGIgJCAFkNAAsLIAVBASAGa62GDAELIAVC/////////weDQoCAgICAgIAIhAshAgJ+IAdFBEBBACEHIARCDIYiA0IAWQRAA0AgB0EBayEHIANCAYYiA0IAWQ0ACwsgBEEBIAdrrYYMAQsgBEL/////////B4NCgICAgICAgAiECyEEIAYgB0oEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgBkEBayIGIAdKDQALIAchBgsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL/////////B1YEQCACIQMMAQsDQCAGQQFrIQYgAkKAgICAgICABFQhByACQgGGIgMhAiAHDQALCyAFQoCAgICAgICAgH+DIQIgBkEASgR+IANCgICAgICAgAh9IAatQjSGhAUgA0EBIAZrrYgLIAKEvwvVAQEEfyAAKAJUIQMCQCAAKAIUIAAoAhwiBWsiBgRAIAAgBTYCFCAAIAUgBhCHBiAGSQ0BCwJAIAMoAhBB4QBHBEAgAygCACEEDAELIAMgAygCBCIENgIACyADKAIMIARqIAEgAygCCCAEayIBIAIgASACSRsiBBAjGiADIAMoAgAgBGoiATYCACABIAMoAgRNDQAgAyABNgIEAn8gAygCCCICIAFLBEAgAygCDCABagwBCyAALQAAQQRxRSACRXINASACIAMoAgxqQQFrC0EAOgAACyAECxgBAX8jAEEQayIBIAA5AwggASsDCCAAogufAQECfgJAIAMpAwAiBEKAgICA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IA43A3ggACAPuSAOuaM5A4gBIABB88wANgJwIAJBmoEBIABB8ABqELYBCyAHKQOgASIOUEUEQCAAIA43A2ggAEHeIjYCYCACQYiAASAAQeAAahCjAQsCQCAHKQOoASIOUA0AIAAgDjcDWCAAQdQeNgJQIAJBiIABIABB0ABqEKMBIAcpA7ABIg5QDQAgACAONwNIIABBzR42AkAgAkGIgAEgAEFAaxCjASAHKQOwASEPIAAgBykDuAEiDkIDhjcDMCAAIA65IA+5ozkDOCAAIA43AyggAEHWHzYCICACQciAASAAQSBqELYBCyAHKQPAASIOUEUEQCAAIAcpA8gBNwMQIAAgDjcDCCAAQfofNgIAIAJBlYABIAAQowELIABBsAZqJAAgAigCTBogAhCzAxogAiACKAIMEQQAGiACLQAAQQFxRQRAIAIoAjQiAARAIAAgAigCODYCOAsgAigCOCIBBEAgASAANgI0CyACQZivBCgCAEYEQEGYrwQgATYCAAsgAigCYBDnASACEOcBCyAMEAggDBDnAQsgB0HQAWokAAv8AgIEfwR+IwBBIGsiAiQAQoCAgIAwIQgCQAJAIAAgARCWASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEGMNACACIAQ2AgggAykDCCIJEBAEfyAEBSAAIAJBCGogCSAEIAQQYw0BIAIoAggLIAIoAgwiBWtBABBKIQMgACABQQAQmQEiBEUNACAELwEGIQcgAiADrSIKNwMYIAIgATcDECAAQQIgAkEQahDrAiIIEAsNACADQQBMDQEgACABEOcCDQAgACAIEOcCDQACQCAAIAhBABCZASIGRQ0AIAQvAQYgBi8BBkcNACAGEJEEIANJDQAgBBCRBCADIAVqSQ0AIAYoAiQgBCgCJCAFIAdB5YoBai0AACIAdGogAyAAdBAjGgwCC0IAIQkDQCAJIApRDQIgACABIAUgCadqrRCfASILEAsNASAAIAggCSALQYCAARDfASEDIAlCAXwhCSADQQBODQALCyAAIAgQCkKAgICA4AAhCAsgAkEgaiQAIAgLzQIBAX4gACABEJYBIgJBAEgEQEKAgICA4AAPCwJAIAJFDQACQAJAAkACQAJAIAGnIgAvAQZB5YoBai0AAA4EAAECAwQLIAAoAiQiACACaiECA0AgACACQQFrIgJPDQUgAC0A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NgIAIAIgAzYCFCAAIAJBCGoQwQIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHRKkEAEBQLQoCAgIDgACEBCyABC2UBAX4gAykDACIBEPYDRQRAIABBrzxBABAUQoCAgIDgAA8LQoCAgIAwIQQgAacpAgRCgICAgICAgIBAg0KAgICAgICAgIB/UQR+IAFC/////w+DQoCAgICQf4QQDQVCgICAgDALCy8BAX5CgICAgOAAIQEgACADKQMAECsiBBALBH5CgICAgOAABSAAIASnQQIQ9QMLC0kCAX4BfyAAIAEQwQMiARALBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDVAhAxIQILIAAgARAKIAILCQAgACABEMEDC04BAX4jAEEQayICJAAgAiAAIAEQwQMiATcDCAJAIAEQCwRAIAEhBAwBCyAAQoCAgIAwQQEgAkEIahDHBCEEIAAgARAKCyACQRBqJAAgBAstAEKAgICA4AAgACADKQMAIAMpAwhBABCaAiIAQQBHrUKAgICAEIQgAEEASBsLhgEBA34gAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAEChCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDkiAkUNACAAIAEgAiAGEA0gBEEAEIcEIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAEChCgICAgOAADwsgACABQQNBABCBAwtjAQF+IAMpAwAiBEL/////b1gEQCAAEChCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOSICRQ0AIAAgBCACEHghAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQKAwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA5IgINAQtCgICAgOAADwsgACABIAIgBEEAEBIhASAAIAIQESABC2YBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAJBABDcASEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuKAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgEQsgENACAAQd8pQQAQFAwBCyAAIARBDGogBRCKBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEJADIQEgACACIAMQmQMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmwMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxQENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJICDQAgACACQQhqIAMpAwgQkgINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUAAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQASABQp26s/uUkv2iJX5CDIhCgICAgICAgPg/hL9EAAAAAAAA8L+gEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEATA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQgwYgB0EIaiAHIAQQgwYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv///////////wCDQoCAgICAgID4/wBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H/D3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9/UXJFBEAgAkKAgICAgICA+D+Evw8LIAK/DwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC90EAgJ8BX8jAEEQayIIJAACfiACRQRARAAAAAAAAPD/RAAAAAAAAPB/IAQbEBUMAQsCfCADKQMAIgFC/////w9YBEAgAkEBIAJBAUobIQsgAachCUEBIQcDQCAHIAtHBEAgCbcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiABpyEKAn8gBARAIAkgChBKDAELIAkgChCxAQshCSAHQQFqIQcMAQsLIAmtDAILQoCAgIDgACAAIAhBCGogARBHDQEaQQEhByAIKwMICyEFIAcgAiACIAdIGyECA0AgAiAHRwRAQoCAgIDgACAAIAggAyAHQQN0aikDABBHDQIaAkAgBb1C////////////AINCgICAgICAgPj/AFYNACAIKwMAIga9Qv///////////wCDQoCAgICAgID4/wBWBEAgBiEFDAELIAQEQCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9g78gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFDAELIAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsgBiAFvUL///////////8Ag0KAgICAgICA+P8AWBsgBr0gBb2EvyAFRAAAAAAAAAAAYiAGRAAAAAAAAAAAYnIbIQULIAdBAWohBwwBCwsgBb0CfyAFmUQA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DAELIAAgAkEIaiADIARsIAZBH3YQqwMNAAJAIARBAUcEQANAIANBAEwNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDKBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmwEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJsBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmwEhBgsgACABEAoLIAJBEGokACAGC5IEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFAwBCwJAIAQQECICDQAgBBAmDQBCgICAgOAAIQUgACAEQcgBIARBABASIggQCw0CIAgQEA0AIAgQJg0AIA0gBzcDCCANIAE3AwAgACAIIARBAiANEDUhBQwCC0KAgICAMCEKAkAgACABECsiDBALBEBCgICAgDAhBQwBCyAAEE4iBRALDQACQCAHEBAEQCANQX82AgAMAQsgACANIAcQxQFBAEgNAQsgDKciDikCBCEBIAAgBBArIgoQCw0AAkAgDSgCACIDRQ0AIAGnQf////8HcSEPAkAgAgRADAELIAqnIgIpAgRC/////weDIQsgDwRAIAFC/////weDIAt9IAtQrSIEfSEHIAOtIQgDQAJAIAQgCXwiASAHVQ0AIA4gAiABpxDLBCIDQQBIDQAgACAOIAmnIAMQmwEiARALDQUgACAFIAYgAUEAEKsBQQBIDQUgCyADrHwhCSAGQgF8IgYgCFINAQwECwsgBkL/////D4MhBgwBCyALUA0BCyAAIA4gCacgDxCbASIBEAsNASAAIAUgBiABQQAQqwFBAEgNAQsgACAMEAogACAKEAoMAgsgACAFEAogACAMEAogACAKEAoLQoCAgIDgACEFCyANQRBqJAAgBQvSAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFEKAgICA4AAhBwwBCwJAIAUQEA0AIAUQJg0AQoCAgIDgACEHIAAgBSAEIAVBABASIgYQCw0BAkAgBEHFAUcNACAAIAUQzARBAE4NACAAIAYQCgwCCyAGEBANACAGECYNACAAIAYgBUEBIAJBKGoQNSEHDAELIAIgACABECsiBjcDCEKAgICA4AAhByAGEAsNACACIAU3AxACQAJAAn8gBEHFAUcEQEKAgICAMCEBQQEMAQsgAEH6xQAQdCIBEAsNASACIAE3AxhBAgshAyAAIAApA0ggAyACQRBqEK8BIQUgACABEAogBRALRQ0BCyAAIAYQCgwBCyAAIAUgBEEBIAJBCGoQugIhByAAIAIpAwgQCgsgAkEwaiQAIAcL+QICBX8DfiMAQRBrIgUkAAJAIAAgARBhIgoQCwRAIAohAQwBCwJAIAAgAykDABCCBCIGBEBCgICAgOAAIQFCgICAgDAhCyAGQQBMDQEgAEG+3QBBABAUDAELQoCAgIDgACEBIAAgAykDABArIgsQCw0AIAunIgcoAgQhCCAFIAqnIgkoAgRB/////wdxIgZBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIgwQEA0AIAAgBUEMaiAMIAZBABBjDQELIAYgCEH/////B3EiBmshAgJAAkACQAJAIAQOAgABAgsgBSgCDCEDDAILIAUoAgwiAyACSiEEQoCAgIAQIQEgAyECIARFDQEMAgsgBSAFKAIMIAZrIgM2AgwgAyECC0KAgICAECEBIANBAEggAiADSHINAANAIAkgByADQQAgBhDCA0UEQEKBgICAECEBDAILIAIgA0chBCADQQFqIQMgBA0ACwsgACAKEAogACALEAoLIAVBEGokACABC68DAQV+IAEQEARAIAAQgQQhAQsgACABQTsgAUEAEBIiBRALBEAgBQ8LAkACQCAFECBFBEAgACAFEAogACABEI8DIgJFDQECfyAEQQBIBEAgAigCKEEYagwBCyACIARBA3RqQdgAagspAwAQDSEFCyAAIAVBAxBQIQEgACAFEAogARALDQECQCADIARBB0ZBA3RqKQMAIgUQEEUEQCAAIAUQKyIFEAsNASAAIAFBMyAFQQMQGRoLIARBB0YEQCADKQMAIQYjAEEQayICJABCgICAgDAhBQJAAkAgACAGQQAQ9QEiBhALBEBCgICAgDAhCAwBCyAAIAZB6gAgBkEAEBIiCBALDQAgABBOIgUQCw0AA0AgACAGIAggAkEMahCsASIJEAtFBEAgAigCDA0DIAAgBSAHIAkQbiEDIAdCAXwhByADQQBODQELCyAAIAZBARCwARoLIAAgBRAKQoCAgIDgACEFCyAAIAgQCiAAIAYQCiACQRBqJAAgBRALDQEgACABQTQgBUEDEBkaCyAAIAFBAEEAQQEQxgIgAQ8LIAAgARAKC0KAgICA4AAhAQsgAQuNAwMHfwF8AX4jAEEQayIFJAACQCAAIAEQYSIBEAsNAAJAAkAgACADKQMAECsiDRALDQAgDaciCigCBEH/////B3EhBiABpyILKAIEQf////8HcSEHAkAgBARAIAcgBmshBEF/IQggAkECSA0BIAAgBSADKQMIEEcNAiAFKwMAIgy9Qv///////////wCDQoCAgICAgID4/wBWDQEgBQJ/QQAgDEQAAAAAAAAAAGUNABogDCAEt2NFDQIgDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgQ2AgwMAQtBACEEIAVBADYCDCACQQJOBEAgACAFQQxqIAMpAwggB0EAEGMNAiAFKAIMIQQLIAcgBmshCUEBIQgLQX8hAyAJIARrIAhsQQBIIAYgB0tyDQEDQCALIAogBEEAIAYQwgNFBEAgBCEDDAMLIAQgCUYNAiAEIAhqIQQMAAsACyAAIAEQCiAAIA0QCkKAgICA4AAhAQwBCyAAIAEQCiAAIA0QCiADrSEBCyAFQRBqJAAgAQuGAQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELQoCAgIDgACEBAkAgACACQQxqIAMpAwAQwwENAEKAgICAMCEBIAIoAgwiA0EASA0AIAMgBKciBSgCBEH/////B3FPDQAgBSACQQxqENkBrSEBCyAAIAQQCgsgAkEQaiQAIAELTAEBfyACQQAgAkEAShshAiAAIAEQYSEBA0ACQCACIARGDQAgARALDQAgACABIAMgBEEDdGopAwAQDRDIAiEBIARBAWohBAwBCwsgAQu0AQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELAn5CgICAgOAAIAAgAkEMaiADKQMAEMMBDQAaAkAgAigCDCIDQQBOBEAgAyAEpyIFKQIEIgGnQf////8HcUkNAQsgAEEAQQAQ1wIMAQsgAAJ/IAFCgICAgAiDUEUEQCAFIANBAXRqLwEQDAELIAMgBWotABALQf//A3EQpwMLIQEgACAEEAoLIAJBEGokACABC6QBAgJ+AX8jAEEQayICJAACQCAAIAEQYSIEEAsEQCAEIQEMAQtCgICAgOAAIQECQCAAIAJBDGogAykDABDDAQ0AQoCAgIDAfiEBIAIoAgwiA0EASA0AIAMgBKciBikCBCIFp0H/////B3FPDQAgBUKAgICACINQRQRAIAYgA0EBdGozARAhAQwBCyADIAZqMQAQIQELIAAgBBAKCyACQRBqJAAgAQuRAgIBfwZ+IwBBIGsiBCQAIAAgBEEIakEAEEEaQoCAgIAwIQUCfgJAAkAgACADKQMAECkiBhALDQAgACAAIAZB8AAgBkEAEBIQlgUiBRALDQAgACAEIAUQQEEASA0AQgAhASAEKQMAIgdCACAHQgBVGyEIIAdCAX0hByACrCEJA0AgASAIUQ0CIAAgACAFIAEQYhA8IgoQCw0BIARBCGogChCNARogASAHWSECIAFCAXwhASABIAlZIAJyDQAgBEEIaiADIAGnQQN0aikDABCaAUUNAAsLIAAgBhAKIAAgBRAKIARBCGoQQ0KAgICA4AAMAQsgACAGEAogACAFEAogBEEIahA3CyEBIARBIGokACABC+sBAgN/AXwjAEEgayIEJAACfgJAIAAgBCACEEENACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv////8PWARAIAGnIgJB///DAE0NAQwECyAAIARBGGogARBHDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD//zBBZHINAyAHAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgK3Yg0DCyAFQQFqIQUgBCACEL4BRQ0BDAMLCyAEEDcMAgsgAEGJGBBpCyAEEENCgICAgOAACyEBIARBIGokACABC4oBAQJ/IwBBIGsiBCQAIAAgBEEIaiACEEEaIAJBACACQQBKGyECAn4DQCACIAVHBEACQCAAIARBBGogAyAFQQN0aikDABCSAkUEQCAEQQhqIAQvAQQQlAFFDQELIARBCGoQQ0KAgICA4AAMAwsgBUEBaiEFDAELCyAEQQhqEDcLIQEgBEEgaiQAIAELCQAgACABEM0ECx8AIAAgARDNBCIBEAsEfiABBSAAQQNBAiABpxsQMQsLgQEBAXwjAEEQayICJAACfkKAgICAECADKQMAIgEQjgFFDQAaQoCAgIDgACAAIAJBCGogARBHDQAaIAIrAwgiBL1CgICAgICAgPj/AINCgICAgICAgPj/AFIgBJwgBGFxIASZRP///////z9DZXGtQoCAgIAQhAshASACQRBqJAAgAQsmAEKAgICA4AAgACADKQMAENQFIgBBAEetQoCAgIAQhCAAQQBIGwsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDQBAsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDRBAsJACAAIAEQrQILxQECAX8BfiMAQRBrIgIkAAJ+IAAgARCtAiIBEAsEQCABDAELQQohBQJAAkAgBA0AIAMpAwAiBhAQDQAjAEEQayIDJABBfyEEAkAgACADQQxqIAYQwwENACADKAIMIgRBJWtBXEsNACAAQabwABBpQX8hBAsgA0EQaiQAIAQiBUEASA0BC0KAgICA4AAgACACQQhqIAEQWQ0BGiAAIAIrAwggBUEAQQAQywIMAQsgACABEApCgICAgOAACyEBIAJBEGokACABC8MBAgF+AXwjAEEQayICJAACQCAAIAEQrQIiBBALBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNAAJAAkAg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CyAAIAUQCkKAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRAKIAAgAUH/AEECIAJBEGoQxQIhBSAAIAIpAxAQCiAAIAIpAxgQCgsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhDFAiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBoRQ0AIAAgAUKAgICAMBDyASIGEAsEQCAGIQUMAQsgACACIAYQwgIhByAAIAYQCgJAIAcQCw0AIAAgASADIAIQuwIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAogBEEBaiEEDAELCyADRQ0AIAAgBxAKDAELIAchBQsgAkEQaiQAIAUL4AECA34BfyMAQRBrIgYkACABQQVGBEAgAikDECEDIAAgAikDGBD4ASEBIAYgAikDICIENwMIIAYCfiADEBAEQCAEEA0iAyABRQ0BGiAAIAMQkgFCgICAgOAADAELIAAgA0KAgICAMEEBIAZBCGoQIgsiAzcDACADEAsiAQRAIAYgABCRASIDNwMAC0KAgICAMCEEIAAgAiABQQN0aikDACIFEBAEfiADBSAAIAVCgICAgDBBASAGECIhBCAGKQMACxAKIAZBEGokACAEDwtB6/AAQbfjAEHX6QJBheQAEAAAC4EBAQN/AkAgAUEyED8iBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQISAAIAMpAxggAhAhIAAgAykDICACECEgACADKQMoIAIQISADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLFgEBfyABQTIQPyICBEAgACACEK0FCwslAQF/IAFBMBA/IgMEQCAAIAMpAwAgAhAhIAAgAykDCCACECELCycBAX8gAUEwED8iAgRAIAAgAikDABAlIAAgAikDCBAlIAAgAhAfCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCFBSAAIAIpAwAQJSAAIAIQHwsLgAEBBX8gAUEqED8iBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACAD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KAIoIgNBAWo2AiggBCADQQN0aiAPNwMAQQALIQMgB0EQaiQAIAsgA0EASCIDcgRAQQJBBCADGwwECyAAIBEQCiAAIAAgD0IAEGIQPCIREAsNACAREPYBRQ0CIAAgAkHgAGogACABQdUAIAFBABASEK0BQQBODQELQoCAgIAwIQ9CgICAgDAhEgwGCyAAIAFB1QACfiAGIAIpA2AgBRCDAyIPQoCAgIAIfEL/////D1gEQCAPQv////8PgwwBCyAPuRAVCxBIIgNBAE4NACADQR52QQJxDAELQQALIQNCgICAgDAhD0KAgICAMCESIAMOBQEFAwUABQsLQQAhBUEAIQRCgICAgDAhD0KAgICAMCESA0AgAigCOCAESgRAIAAgAkEMaiACKAIUIARBA3RqKQMAIhYQ2gFBAEgNAyAAIBEQCiAAIAAgFkIAEGIQPCIREAsNAyAAIAIgACAWQdcAIBZBABASEK0BDQMCQCACKQMAIhAgBikCBEL/////B4MiAVUEQCACIAE3AwAgASEQDAELIBBCAFkNAEIAIRAgAkIANwMACyAAIBIQCiAAEE4iEhALDQMgACASQgAgERANIhEQbkEASA0DIAIoAgwiA0EBIANBAUsbIgOtIRpCASEBA0AgASAaUgRAIAAgFiABEGIiGBALDQUgGBAQRQRAIAAgGBA8IhgQCw0GCyAAIBIgASAYEG4hByABQgF8IQEgB0EATg0BDAULCyAAIBQQCiAAIBZBhwEgFkEAEBIiFBALDQMCQCAKBEAgACASIBogEEL/////D4MQbkEASA0FIAAgEiADQQFqrSAVEA0QbkEASA0FAkAgFBAQDQAgACASIANBAmqtIBQQDSIBEG5BAE4NACABIRQMBgsgAiASNwNoIAJCgICAgDA3A2AgACAPEAogACAAIBlBAiACQeAAakEAEJsDEDwhDwwBC0KAgICAMCEBIBQQEEUEQCAAIBQQKSIBEAsNBQsgAiAXNwOIASACIAE3A4ABIAIgEjcDeCACIBU3A2ggAiARNwNgIAIgEEL/////D4M3A3AgACAPEAogACACQeAAahCPBSEPIAAgARAKCyAPEAsNAyAFrCAQVwRAIAJByABqIgMgBiAFIBCnEFcaIAMgDxCaARogEacpAgRC/////weDIBB8pyEFCyAEQQFqIQQMAQsLIAJByABqIgMgBiAFIAYoAgRB/////wdxEFcaIAMQNyETDAILQoCAgIAwIQ9CgICAgDAhEkKAgICAMCERCyACQcgAahBDCyACQRBqEI4FIAAgFxAKIAAgERAKIAAgEhAKIAAgDxAKIAAgFBAKIAAgFRAKCyACQZABaiQAIBMLjQEAIwBBIGsiAiQAAn4CQCABECBFBEAgABAoDAELIAAgAkEIaiIDQQAQQRogA0EvED0aAkAgAyAAIAFB7AAgAUEAEBIQjQENACACQQhqIgNBLxA9GiADIAAgAUHtACABQQAQEhCNAQ0AIAJBCGoQNwwCCyACQQhqEEMLQoCAgIDgAAshASACQSBqJAAgAQs/AQF+QoCAgIDgACEEIAAgASADKQMAENgBIgEQCwR+QoCAgIDgAAUgARAmIQIgACABEAogAkWtQoCAgIAQhAsLgAIBA34CQCAAIAFBARDbASICRQ0AIAMpAwghBgJAAkAgACADKQMAIgRBABDbASIDBEAgBhAQRQRAIABB4OAAQQAQFEKAgICA4AAPCyADNQIAQoCAgICQf4QQDSEEIAM1AgRCgICAgJB/hBANIQUMAQtCgICAgDAhBQJ+IAQQEARAIABBLxAxDAELIAAgBBArCyIEEAsNASAAIAQgBhCDBCIFEAsNAQsgACACNQIAQoCAgICQf4QQCiAAIAI1AgRCgICAgJB/hBAKIAIgBT4CBCACIAQ+AgAgACABQdUAQgAQSEEASA0BIAEQDQ8LIAAgBBAKIAAgBRAKC0KAgICA4AALawEBfyABQv////9vWARAIAAQKEKAgICA4AAPCwJ+IAAgAUEAENsBIgNFBEBCgICAgDAgACABIAAoAigpA5ABEFgNARogAEESEJ0DQoCAgIDgAA8LIAIgAygCBC0AEHFBAEetQoCAgIAQhAsLxgMBB38jAEEgayIFJAACQAJAAkACQAJAIAFC/////29YBEAgABAoDAELIAAgASAAKAIoKQOQARBYDQIgACABQQEQ2wEiAg0BC0KAgICA4AAhAQwDCyACKAIAIgcoAgQiAkH/////B3EiAw0BCyAAQZP5ABB0IQEMAQsgACAFQQhqIAMgAkEfdhCrAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEC8iA0HbAGsOAwMBAgALIAIhAAJAIANBCmsOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQLyEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQL0HdAEYiAhshAEHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDchAQwDCyACIQBBASEECyAFQQhqIAMQlAEaIAZBAEgNACAFQQhqIAYQlAEaDAALAAsgBUEgaiQAIAEL1QICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAoQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABASECwiAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBycsAEM4CECwiA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFB6cwAEM4CECwiA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBrT4QzgIQLCIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHvACABQQAQEhAsIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQdcMEM4CECwiA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEP4BIQULIARBEGokACAFC+0KAhF/AX4jAEEQayIHJAACQCAAIAEQYSIBEAsNACMAQRBrIgkkAEF/IQQCQCAAIgYgARArIhUQCw0AIAYgFaciCygCBEH/////B3EiCEEBEEpBAnQQLSIARQRAIAYgFRAKIAdBADYCCAwBCyAJQQA2AgxBACEEA0AgCCAKSgRAIAAgBEECdGogCyAJQQxqENkBNgIAIARBAWohBCAJKAIMIQoMAQsLIAYgFRAKIAcgADYCCAsgCUEQaiQAIAYgARAKQoCAgIDgACEBIAQiAEEASA0AAkAgAkUNACADKQMAIhUQEA0AAkAgBiAHQQxqIBUQjwIiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIEQcMAa0H/AXFBAUsNACAHKAIMIAJBA2ogAkECaiADGyACa0EBakYNAgsgBiACEDYgBkHtOxBpCyAGIAcoAggQGAwCCyAGIAIQNiAEIANBAXRqQcMAayEFCyAHKAIIIQsgBigCECECIwBBIGsiCSQAIAlBCGoiAyACQSsQ5gICQAJAAkACQCADIABBAnQiAxDMAUUEQCAFRQRAQQAhAiAAQQAgAEEAShshBANAIAIgBEYNBCACQQJ0IQggAkEBaiECIAggC2ooAgBB/wFNDQALCyAJQQhqIgIgCyAAIAVBAXYQtgQgAigCDEUNAQsgB0EANgIEQX8hAAwDCyAJKAIIIQhBACECIAkoAgwiDkECdiIAQQFrIQ8DQAJAAkAgACACSgRAIAggAiIDQQJ0aigCABCmAkUNAQNAIAMgD0YEQCAAIQIMAwsgCCADQQFqIgRBAnRqKAIAIhAQpgIiDARAA0ACQCACIANKDQAgCCADQQJ0aiIKKAIAEKYCIAxMDQAgCiAKKAIANgIEIANBAWshAwwBCwsgA0ECdCAIaiAQNgIEIAQhAwwBBSAEIQIMAwsACwALDAELIAJBAWohAgwBCwsgBUEBcSAOQQhJcg0BIABBASAAQQFLGyESQQEhBEEBIQADQCAEIBJGDQIgCCAEQQJ0aiIPKAIAEKYCIQMgACECAkACQANAIAJBAEwNASAIIAJBAWsiAkECdGoiECgCABCmAiIFBEAgAyAFSiEFQYACIQMgBQ0BDAILCwJ/QQAhBSAQKAIAIgJBzARsIA8oAgAiCkEcbGpBnI2hAWsgAkGAImtBEksgCkHhImtBFEtyRQ0AGgJAIAJBgNgCayIDQaPXAEsNACADQf//A3FBHHAgCkGnI2siA0EbS3INACACIANqDAELIwBBEGsiAyQAQbAHIQ4DQAJAIAUgDkoEQEEAIQwMAQsgA0EIaiAFIA5qQQJtIhFBAXRBsLEDai8BACIMQQZ2IhNBAnRB0MECaigCACINQQ52IhQgDEE/cWoiDCATIBQgDUEHdkH/AHEgDUEBdkE/cRCLBhogAiADKAIIayINIAogAygCDGsgDRsiDUEASARAIBFBAWshDgwCCyANRQ0AIBFBAWohBQwBCwsgA0EQaiQAIAwLIgJFDQAgECACNgIADAELIAggAEECdGogDygCADYCACAAQQFqIQALIARBAWohBAwACwALIAcgCSgCCCALIAMQIzYCBAwBCyAHIAg2AgQLIAlBIGokACAGIAsQGCAAQQBIDQAgBygCBCEDIwBBIGsiAiQAAkAgBiACQQhqIAAQQQ0AQQAhBSAAQQAgAEEAShshAAJAA0AgACAFRg0BIAVBAnQhBCAFQQFqIQUgAkEIaiADIARqKAIAEL4BRQ0ACyACQQhqEEMMAQsgAkEIahA3IQELIAJBIGokACAGIAcoAgQQGAsgB0EQaiQAIAELuwECA38BfgJAAkAgAhBcRQ0AIAIQeiEHIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACAHIAqnIggoAgRB/////wdxTw0AAkBBBCAGEKIDRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB/Ug0AIAOnIgkpAgRC/////weDQgFSDQAgCCAHEC8gCUEAEC9GDQILIAAgBkG/0QAQdw8LIAAgASACIAMgBCAFIAZBgIAIchB2IQILIAILHQACfyACEFwEQEEAIAIQeiABEJkESQ0BGgtBAQsLpwEBAn8CQCADEFxFDQAgAqcpAyAiAkKAgICAcINCgICAgJB/Ug0AIAMQeiIDIAKnIgUpAgQiAqdB/////wdxTw0AQQEhBCABRQ0AAn8gAkKAgICACINQRQRAIAUgA0EBdGovARAMAQsgAyAFai0AEAshAyABQQQ2AgAgACADQf//A3EQpwMhAiABQoCAgIAwNwMYIAFCgICAgDA3AxAgASACNwMICyAEC2gBAn8gAacoAhAiAyADKAIYIAJxQX9zQQJ0aigCACEAIAMQJyEDA0ACQCAARQRAQQAhAAwBCyAAQQN0IANqIgRBCGshACAEQQRrKAIAIAJGDQAgACgCAEH///8fcSEADAELCyAAQQBHC94CAQJ+IwBBIGsiBSQAAkACQCAAIAFBJRBoIgJFDQACQCACKQMAIgEQEEUEQAJAAkAgAaciAy8BBkEVa0H//wNxQQhNBEAgAxCYAUUNASAAEHMMBQsgACAFQRxqIAEQ2gENBCAFKAIcIQMMAQsgBSADKAIoIgM2AhwLIAMgAigCDCIDSw0BIAAgAikDABAKIAJCgICAgDA3AwALIARBATYCAEKAgICAMCEBDAILIAIgA0EBajYCDCAEQQA2AgAgAigCCEUEQCADQQBOBEAgA60hAQwDCyADuBAVIQEMAgtCgICAgOAAIQEgACACKQMAIAMQeSIGEAsNASACKAIIQQFGBEAgBiEBDAILIANBAE4EfiADrQUgA7gQFQshByAFIAY3AwggBSAHNwMAIABBAiAFEJIDIQEgACAGEAogACAHEAoMAQsgBEEANgIAQoCAgIDgACEBCyAFQSBqJAAgAQuxAgIEfwJ+IwBBEGsiASQAIAIpAxghBwJAAkAgAikDECIIEJwBRQRAIABBmPkAQQAQFAwBCyAAIAgQtwEiBEUEQEEAIQQMAQsgACAHELcBIgVFDQACfwJAIAAgBCAFEL0FIgNFDQAgACADEIUEQQBIBEAgAEEBEKUEQQAMAgsgACADrUKAgICAUIQQDSAAKQPAAUEAQQAQuwUiBxALDQAgACAHEAogAyEGCyAGCyEDIAAgBRA2IANFDQAgASAAIAMQiQMiBzcDACAHEAsNACAAIAAgAikDAEKAgICAMEEBIAEQIhAKIAAgASkDABAKDAELIAEgABCRATcDCCAAIAAgAikDCEKAgICAMEEBIAFBCGoQIhAKIAAgASkDCBAKCyAAIAQQNiABQRBqJABCgICAgDALaQECfyMAQRBrIgckAAJ/AkAgAaciCC0ABUEIcUUNACAAIAdBDGogAhCzAUUNACAHKAIMIAgoAihPDQBBfyAAIAgQoQMNARoLIAAgASACIAMgBCAFIAZBgIAIchB2CyEAIAdBEGokACAAC0YBAn4gAiAAKAIAEDEhA0EAIQAgAiABKAIAEDEhBAJAIAMQCw0AIAQQCw0AIAOnIASnEJQCIQALIAIgAxAKIAIgBBAKIAALawEBfgJAAkACQAJAAkAgAy0ABSIBDgQDAgIAAQsgACADKAIIEPQEDwsgAUEIRg0CCxABAAsgACADKAIMIAMoAgAgAy0ACCADLQAJIAMuAQYQyQEPCyAAIAAQOyIEIAMoAgggAygCDBAkIAQLCQAgACADEIkDCzwBAX4gABA7IgQQC0UEQCAAIARBPCABrUKAgICAcIQQDUEDEBlBAE4EQCAEDwsgACAEEAoLQoCAgIDgAAtfAQF/AkAgAUUEQCACRQ0BIAAgAhClBQ8LIAJFBEAgACAAKAIAQQFrNgIAIAAgACgCBEEIazYCBCABEOcBDAELIAAoAgggACgCBCACak8EfyABIAIQ8QUFQQALDwtBAAsmACABBEAgACAAKAIAQQFrNgIAIAAgACgCBEEIazYCBCABEOcBCwsoAQF/AkAgAacoAiAiA0UNACADKAIAQQRGDQAgACADQQhqIAIQ7wMLCxwBAX8gAUEoED8iAgRAIAAgAhDtAyAAIAIQHwsLJQEBfyABpygCICIDBEAgACADKQMAIAIQISAAIAMpAwggAhAhCwsnAQF/IAGnKAIgIgIEQCAAIAIpAwAQJSAAIAIpAwgQJSAAIAIQHwsLHgEBfyABpygCICICBEAgACACKQMAECUgACACEB8LC0MBAn8gAacoAiAiAgRAAkAgAikDACIBEN4FRQ0AIAIoAgwiA0UNACAAIAMQ8QMgAikDACEBCyAAIAEQJSAAIAIQHwsLWAEDfwJAIAGnKAIgIgRFDQAgBEEIaiEDIARBBGohBQNAIAMoAgAiAyAFRg0BIAQoAgBFBEAgACADKQMQIAIQIQsgACADKQMYIAIQISADQQRqIQMMAAsACwuBAQEFfyABpygCICIDBEAgA0EEaiEFIAMoAgghAgNAIAIgBUcEQCACKAIEIQYgAkEQayEEIAJBDGsoAgBFBEACQCADKAIABEAgBBCmBQwBCyAAIAIpAxAQJQsgACACKQMYECULIAAgBBAfIAYhAgwBCwsgACADKAIQEB8gACADEB8LCyEBAX8gAacoAiAiAwRAIAAgAzUCDEKAgICAcIQgAhAhCwtAAQF/IAGnKAIgIgIEQCAAIAI1AgxCgICAgHCEIgEQ3gUEfiACEEYgAjUCDEKAgICAcIQFIAELECUgACACEB8LC1sBAn8gAacoAiAiAgRAAkACQCACLQAFRQ0AIAAoArwBIgNFDQAgACgCxAEgAigCCCADEQMADAELIAIoAhgiA0UNACAAIAIoAhQgAigCCCADEQYACyAAIAIQHwsLKQEBfyAAIAGnIgI1AiRCgICAgJB/hBAlIAAgAjUCIEKAgICAkH+EECULEQAgACABpygCICkDACACECELGQEBfyAAIAGnKAIgIgIpAwAQJSAAIAIQHwtBAQN/AkAgAUEPED8iBEUNACAEQQhqIQUDQCADIAQtAAVPDQEgACAFIANBA3RqKQMAIAIQISADQQFqIQMMAAsACwtDAQN/IAFBDxA/IgMEQCADQQhqIQQDQCACIAMtAAVPRQRAIAAgBCACQQN0aikDABAlIAJBAWohAgwBCwsgACADEB8LC0kBAn8gACABpygCICIEKQMAIAIQISAAIAQpAwggAhAhA0AgAyAEKAIQTkUEQCAAIAQgA0EDdGopAxggAhAhIANBAWohAwwBCwsLSQECfyAAIAGnKAIgIgIpAwAQJSAAIAIpAwgQJQNAIAMgAigCEE5FBEAgACACIANBA3RqKQMYECUgA0EBaiEDDAELCyAAIAIQHwuOAQEEfyABpyIDKAIkIQUgAygCICEEIAMoAigiAwRAIAAgA61CgICAgHCEIAIQIQsgBARAAkAgBUUNAEEAIQMDQCADIAQoAjxODQECQCAFIANBAnRqKAIAIgZFDQAgBi0ABUEBcUUNACAAIAYgAhEDAAsgA0EBaiEDDAALAAsgACAErUKAgICAYIQgAhAhCwtzAQN/IAGnIgIoAigiAwRAIAAgA61CgICAgHCEECULIAIoAiAiAwRAIAIoAiQiBARAQQAhAgNAIAIgAygCPE5FBEAgACAEIAJBAnRqKAIAEPkBIAJBAWohAgwBCwsgACAEEB8LIAAgA61CgICAgGCEECULCxIAIAGnKAIgIgAEQCAAEK4DCwsOACAAIAGnKQMgIAIQIQsZACAAIAGnIgApAyAQJSAAQoCAgIAwNwMgCzUBAn8gAachBANAIAMgBCgCKE9FBEAgACAEKAIkIANBA3RqKQMAIAIQISADQQFqIQMMAQsLCzwBAn8gAachAwNAIAIgAygCKE9FBEAgACADKAIkIAJBA3RqKQMAECUgAkEBaiECDAELCyAAIAMoAiQQHwsIACAAIAIQHwu4AQIBfwJ+IwBBIGsiAyQAIAFBA0YEQCACKQMQIQQgAikDCCEFAkAgACADQRBqIAIpAwAQrAVBAEgEQEKAgICA4AAhBAwBCyAAIAQgBUECIANBEGoQIiIEEAsEQCADIAAQkQE3AwggACADKQMYQoCAgIAwQQEgA0EIahAiIQQgACADKQMIEAoLIAAgAykDEBAKIAAgAykDGBAKCyADQSBqJAAgBA8LQYvxAEG34wBBu+oCQZrkABAAAAvoAQEIfyMAIgchCyABpygCICIIKAIQIglBACAJQQBKGyEMIAcgAyAJaiIKQQN0QQ9qQXBxayIHJAADfiAGIAxGBH5BACEGIANBACADQQBKGyEDA0AgAyAGRkUEQCAHIAYgCWpBA3RqIAQgBkEDdGopAwA3AwAgBkEBaiEGDAELCwJ+IAVBAXEEQCAAIAEgAhBYIQMgACAIKQMAIgEgASACIAMbIAogBxCQAwwBCyAAIAgpAwAgCCkDCCAKIAcQIgshASALJAAgAQUgByAGQQN0Ig1qIAggDWopAxg3AwAgBkEBaiEGDAELCwuHAQIBfgF/QoCAgIDgACEGAkAgAEHIABBqIgUEQCAFQQA2AgAgACAFQQhqIgcgASACIAMgBBDyAwRAIAVBBDYCAAwCCyAAIAcQwQIiAhALDQEgACACEAogACABQSgQbSIGEAsNASAGIAUQiwELIAYPCyAAKAIQIAUQ7QMgACAFEBhCgICAgOAAC+oFAgl/AXwjAEFAaiIGJAAgAaciCC0AKSELIAgtACghCSAGIAAoAhAiDCgCjAE2AhAgDCAGQRBqNgKMASAIKAIgIQcgBiADNgI0IAYgATcDGCAGQQA2AjgCQCADIAlOBEAgBCEADAELIANBACADQQBKGyENIAYgCUEDdEEPakHwH3FrIgAkAANAIAogDUYEQCADIQQDQCAEIAlGRQRAIAAgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCyAGIAk2AjQFIAAgCkEDdCIOaiAEIA5qKQMANwMAIApBAWohCgwBCwsLIAYgADYCICAIKAIkIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCw4NCwIAAQABBwgDBAUGCQoLIAVBAXENCkKAgICAMCECIAtBAkcNCgwLCyAFQQFxDQBCgICAgDAhAiALQQNGDQoLIAcgAiADIAAgCC4BKiAEEQUAIQEMCwsgByACIAQRCQAhAQwKCyAHIAIgACkDACAEERYAIQEMCQsgByACIAguASogBBEPACEBDAgLIAcgAiAAKQMAIAguASogBBEwACEBDAcLIAcgBkEIaiAAKQMAEEcNBSAGKwMIIAQRBwAiD70CfyAPmUQAAAAAAADgQWMEQCAPqgwBC0GAgICAeAsiALe9UQRAIACtIQEMBwsgDxAVIQEMBgtCgICAgOAAIQEgByAGQQhqIAApAwAQRw0FIAcgBiAAKQMIEEcNBSAGKwMIIAYrAwAgBBEfACIPvQJ/IA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwGCyAPEBUhAQwFCyAHIAIgAyAAIAZBCGogCC4BKiAEERIAIgEQCw0EIAYoAggiAEECRg0EIAcgASAAEJQDIQEMBAsQAQALIAcgAiADIAAgBBEAACEBDAILIAdBxxBBABAUC0KAgICA4AAhAQsgDCAGKAIQNgKMASAGQUBrJAAgAQu5AQEFfyMAIgUhCCAAIAIgAyADIAFBDxA/IgYtAAQiB0gEf0EAIQAgA0EAIANBAEobIQkgBSAHQQN0QQ9qQfAfcWsiBSQAA38gACAJRgR/IAMhBAN/IAQgB0YEfyAFBSAFIARBA3RqQoCAgIAwNwMAIARBAWohBAwBCwsFIAUgAEEDdCIKaiAEIApqKQMANwMAIABBAWohAAwBCwsFIAQLIAYvAQYgBkEIaiAGKAIAERIAIQEgCCQAIAELaAEBfyMAQRBrIgMkACABKAIEIQEgAiADQQxqIAAoAgQQswFBACACIANBCGogARCzARtFBEBBjTFBt+MAQYM6QZw0EAAACyADKAIIIQAgAygCDCEBIANBEGokAEF/IAAgAUcgACABSxsLDwAgASABKAIAQQFqNgIACzkBAX8gASABKAIAIgJBAWo2AgAgAkUEQCABQQhqIgIQRiACIABB0ABqEEsgASABLQAEQQ9xOgAECwtYAQF/IAEoAgAiAkEASgRAIAEgAkEBayICNgIAAkAgAg0AIAEtAARB8AFxQRBHDQAgAUEIaiIBEEYgASAAQeAAahBLCw8LQZDzAEG34wBBsCxBkdwAEAAAC4sCAgN/AX4jAEEgayIFJAACQCABpyIHKAIgIgZFDQAgBigCCCIIKAIEDQAgCEEBNgIEIAcvAQZBK2shByADQQBMBH5CgICAgDAFIAQpAwALIQECQAJAIAcNACABECBFDQACQAJAIAAgASAGKQMAEFgEQCAAQfo0QQAQFAwBCyAAIAFB/wAgAUEAEBIiAhALRQ0BCyAAEJEBIQEgACAGKQMAIAFBARCwBSAAIAEQCgwDCyAAIAIQOg0BIAAgAhAKCyAAIAYpAwAgASAHELAFDAELIAYpAwAhCSAFIAI3AxAgBSABNwMIIAUgCTcDACAAQSZBAyAFEIQDIAAgAhAKCyAFQSBqJABCgICAgDALoQEBAX4gAEHoABBqIgVFBEBCgICAgOAADwsgBUEBNgIAIAAoAhAgBUEEELwBIAVCgICAgDA3AxggBUKAgICAMDcDECAFQQA2AiACQAJAIAAgBUEQahCRAyIGEAtFBEAgACAFQShqIAEgAiADIAQQ8gNFDQELIAAgBhAKQoCAgIDgACEGDAELIAVBATYCICAAIAUQrwULIAAoAhAgBRCuBSAGC2YBAX8gAaciBS8BBkEuayEGIAUoAiAhBSADQQBMBH5CgICAgDAFIAQpAwALIQEgBSAGNgI0IAEQDSEBAkAgBgRAIAAgARCSAQwBCyAFKAJkQQhrIAE3AwALIAAgBRCvBUKAgICAMAuQAQIBfwF+QoCAgIDgACEHAkAgAEHQABBqIgYEQCAGQQA2AgQgBkHIAGoQbyAAIAZBCGoiBSABIAIgAyAEEPIDBEAgBkEFNgIEDAILIAAgBRDBAiICEAsNASAAIAIQCiAAIAFBMhBtIgcQCw0BIAYgBz4CACAHIAYQiwELIAcPCyAAKAIQIAYQrQVCgICAgOAAC+MCAgR/A34jAEEQayIEJABCgICAgOAAIQkCQAJ/AkAgAykDACIKQoCAgIBwWgRAIAqnIgUvAQZBE2tB//8DcUECSQ0BCyAAQRMQnQNBAAwBCyAFKAIgCyIFRQ0AIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwgQwgENAQsgBS0ABARAIAAQcwwBCyAEKQMIIgggBSgCACIGrFYEQCAAQfsZEGkMAQsgBiAIpyIHayEGAkAgAkEDSA0AIAMpAxAiCBAQDQAgACAEIAgQwgENASAEKQMAIgggBq1WBEAgAEGAwgAQaQwCCyAIpyEGCyAAIAFBHhBtIgEQCw0AAkACQCAFLQAEBEAgABBzDAELIABBGBAtIgINAQsgACABEAoMAQsgAiABpyIANgIIIAoQDSEJIAIgBjYCFCACIAc2AhAgAiAJPgIMIAIgBUEMahBLIAAgAjYCICABIQkLIARBEGokACAJCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALEwAgAEHp4QBBABAUQoCAgIDgAAupAQEEfyAAKAJUIgMoAgQiBSAAKAIUIAAoAhwiBmsiBCAEIAVLGyIEBEAgAygCACAGIAQQIxogAyADKAIAIARqNgIAIAMgAygCBCAEayIFNgIECyADKAIAIQQgBSACIAIgBUsbIgUEQCAEIAEgBRAjGiADIAMoAgAgBWoiBDYCACADIAMoAgQgBWs2AgQLIARBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgspACABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAgASkDCBDtBTkDAAuuGAMSfwF8An4jAEGwBGsiCyQAIAtBADYCLAJAIAG9IhlCAFMEQEEBIRBB9Q8hEyABmiIBvSEZDAELIARBgBBxBEBBASEQQfgPIRMMAQtB+w9B9g8gBEEBcSIQGyETIBBFIRULAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBBBA2oiAyAEQf//e3EQayAAIBMgEBBlIABByztB5OkAIAVBIHEiBRtB/8UAQcDsACAFGyABIAFiG0EDEGUgAEEgIAIgAyAEQYDAAHMQayACIAMgAiADShshCQwBCyALQRBqIRECQAJ/AkAgASALQSxqEPcFIgEgAaAiAUQAAAAAAAAAAGIEQCALIAsoAiwiBkEBazYCLCAFQSByIg5B4QBHDQEMAwsgBUEgciIOQeEARg0CIAsoAiwhCkEGIAMgA0EASBsMAQsgCyAGQR1rIgo2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQwgC0EwaiALQdACaiAKQQBIGyINIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAHQQRqIQcgASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgCkEATARAIAohAyAHIQYgDSEIDAELIA0hCCAKIQMDQCADQR0gA0EdSRshAwJAIAdBBGsiBiAISQ0AIAOtIRpCACEZA0AgBiAZQv////8PgyAGNQIAIBqGfCIZIBlCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGaciBkUNACAIQQRrIgggBjYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyALIAsoAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgDEEZakEJbiEHIANBAEgEQCAHQQFqIQ8gDkHmAEYhEgNAQQAgA2siA0EJIANBCUkbIQkCQCAGIAhLBEBBgJTr3AMgCXYhFEF/IAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCACEHIANFDQEgBiADNgIAIAZBBGohBgwBCyAIKAIAIQcLIAsgCygCLCAJaiIDNgIsIA0gCCAHRUECdGoiCCASGyIHIA9BAnRqIAYgBiAHa0ECdSAPShshBiADQQBIDQALC0EAIQMCQCAGIAhNDQAgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIAxBACADIA5B5gBGG2sgDkHnAEYgDEEAR3FrIgcgBiANa0ECdUEJbEEJa0gEQEEEQaQCIApBAEgbIAtqIAdBgMgAaiIJQQltIg9BAnRqQdAfayEKQQohByAJIA9BCWxrIglBB0wEQANAIAdBCmwhByAJQQFqIglBCEcNAAsLAkAgCigCACISIBIgB24iDyAHbGsiCUUgCkEEaiIUIAZGcQ0AAkAgD0EBcUUEQEQAAAAAAABAQyEBIAdBgJTr3ANHIAggCk9yDQEgCkEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gCSAHQQF2IhRGGyAJIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAogEiAJayIJNgIAIAEgGKAgAWENACAKIAcgCWoiAzYCACADQYCU69wDTwRAA0AgCkEANgIAIAggCkEEayIKSwRAIAhBBGsiCEEANgIACyAKIAooAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIApBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgB0EEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCgwBCyADQX9zQX8gDEEBIAwbIgYgA0ogA0F7SnEiChsgBmohDEF/QX4gChsgBWohBSAEQQhxIgoNAEF3IQYCQCAJDQAgB0EEaygCACIORQ0AQQohCUEAIQYgDkEKcA0AA0AgBiIKQQFqIQYgDiAJQQpsIglwRQ0ACyAKQX9zIQYLIAcgDWtBAnVBCWwhCSAFQV9xQcYARgRAQQAhCiAMIAYgCWpBCWsiBkEAIAZBAEobIgYgBiAMShshDAwBC0EAIQogDCADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgDEobIQwLQX8hCSAMQf3///8HQf7///8HIAogDHIiEhtKDQEgDCASQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIANB/////wcgDmtKDQMgA0EAIANBAEobIQYMAQsgESADIANBH3UiBmogBnOtIBEQowIiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBEgBmtBAkgNAAsLIAZBAmsiDyAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBEgD2siBkH/////ByAOa0oNAgsgBiAOaiIDIBBB/////wdzSg0BIABBICACIAMgEGoiBSAEEGsgACATIBAQZSAAQTAgAiAFIARBgIAEcxBrAkACQAJAIBVBxgBGBEAgC0EQaiIGQQhyIQMgBkEJciEKIA0gCCAIIA1LGyIJIQgDQCAINQIAIAoQowIhBgJAIAggCUcEQCAGIAtBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALDAELIAYgCkcNACALQTA6ABggAyEGCyAAIAYgCiAGaxBlIAhBBGoiCCANTQ0ACyASBEAgAEGL9gBBARBlCyAMQQBMIAcgCE1yDQEDQCAINQIAIAoQowIiBiALQRBqSwRAA0AgBkEBayIGQTA6AAAgBiALQRBqSw0ACwsgACAGIAxBCSAMQQlIGxBlIAxBCWshBiAIQQRqIgggB08NAyAMQQlKIQMgBiEMIAMNAAsMAgsCQCAMQQBIDQAgByAIQQRqIAcgCEsbIQkgC0EQaiIDQQlyIQ0gA0EIciEDIAghBwNAIA0gBzUCACANEKMCIgZGBEAgC0EwOgAYIAMhBgsCQCAHIAhHBEAgBiALQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiALQRBqSw0ACwwBCyAAIAZBARBlIAZBAWohBiAKIAxyRQ0AIABBi/YAQQEQZQsgACAGIA0gBmsiBiAMIAYgDEgbEGUgDCAGayEMIAdBBGoiByAJTw0BIAxBAE4NAAsLIABBMCAMQRJqQRJBABBrIAAgDyARIA9rEGUMAgsgDCEGCyAAQTAgBkEJakEJQQAQawsgAEEgIAIgBSAEQYDAAHMQayACIAUgAiAFShshCQwBCyATIAVBGnRBH3VBCXFqIQwCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRgDQCAYRAAAAAAAADBAoiEYIAZBAWsiBg0ACyAMLQAAQS1GBEAgGCABmiAYoaCaIQEMAQsgASAYoCAYoSEBCyARIAsoAiwiBiAGQR91IgZqIAZzrSAREKMCIgZGBEAgC0EwOgAPIAtBD2ohBgsgEEECciEKIAVBIHEhCCALKAIsIQcgBkECayINIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEGIAtBEGohBwNAIAciBQJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIHQfCrBGotAAAgCHI6AAAgBiADQQBKckUgASAHt6FEAAAAAAAAMECiIgFEAAAAAAAAAABhcSAFQQFqIgcgC0EQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9////ByAKIBEgDWsiBWoiBmsgA0gNACAAQSAgAiAGAn8CQCADRQ0AIAcgC0EQamsiCEECayADTg0AIANBAmoMAQsgByALQRBqayIICyIHaiIDIAQQayAAIAwgChBlIABBMCACIAMgBEGAgARzEGsgACALQRBqIAgQZSAAQTAgByAIa0EAQQAQayAAIA0gBRBlIABBICACIAMgBEGAwABzEGsgAiADIAIgA0obIQkLIAtBsARqJAAgCQtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEMIBRQRAIAAgASACKQMIQRQQ9AMhBAsgAkEQaiQAIAQLBQAgAJ0L3gECAX8CfiAAvSICQv///////////wCDIgO/IQACQCADQiCIpyIBQeunhv8DTwRAIAFBgYDQgQRPBEBEAAAAAAAAAIAgAKNEAAAAAAAA8D+gIQAMAgtEAAAAAAAA8D9EAAAAAAAAAEAgACAAoBClAkQAAAAAAAAAQKCjoSEADAELIAFBr7HB/gNPBEAgACAAoBClAiIAIABEAAAAAAAAAECgoyEADAELIAFBgIDAAEkNACAARAAAAAAAAADAohClAiIAmiAARAAAAAAAAABAoKMhAAsgACAAmiACQgBZGwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABD4BSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARCwBCECIAErAwAgASsDCCACQQFxEPgFIQALIAFBEGokACAAC0ABAX4jAEEQayICJABCgICAgOAAIQQgACACQQhqIAMpAwAQwgFFBEAgACABIAIpAwgQjAMhBAsgAkEQaiQAIAQLBABCAAvRAgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQRBAiEHIANBEGohAQJ/AkACQCAAKAI8IAFBAiADQQxqEAMQ8wVFBEADQCAEIAMoAgwiBUYNAiAFQQBIDQMgASAFIAEoAgQiCEsiBkEDdGoiCSAFIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAQgBWshBCAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMQ8wVFDQALCyAEQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiABKAIEawshBCADQSBqJAAgBAsFACAAnwudAQMCfAF/AX5EAAAAAAAA4D8gAKYhAiAAvUL///////////8AgyIEvyEBAkAgBEIgiKciA0HB3JiEBE0EQCABEKUCIQEgA0H//7//A00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQigYhAAsgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDaAiEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABELAEQQNxDgMAAQIDCyABKwMAIAErAwhBARDaAiEADAMLIAErAwAgASsDCBDbAiEADAILIAErAwAgASsDCEEBENoCmiEADAELIAErAwAgASsDCBDbApohAAsgAUEQaiQAIAAL6AQCA38HfiMAQSBrIgUkAEKAgICA4AAhDQJAIAAgASAEQR9qEG0iARALDQBCgICAgDAhCAJAIABBHBBqIgZFBEBCgICAgDAhC0KAgICAMCEKDAELIAZBBGoQbyAGIARBAXZBAXE2AgAgASAGEIsBIAZBATYCFCAGIABBCBAtIgc2AhBCgICAgDAhC0KAgICAMCEKIAdFDQAgBxBvIAZBBDYCGAJAIAJBAEwEfkKAgICAMAUgAykDAAsiCBAQDQAgCBAmDQACQCAAIAFB6ABBwgAgBEEBcSICGyABQQAQEiIKEAsNACAAIAoQOkUEQCAAQZc2QQAQFAwBCyAAIAhBABD1ASIIEAsNAiAAIAhB6gAgCEEAEBIiCxALDQICQANAIAUgACAIIAsgBUEUahCsASIJNwMYIAkQCw0EIAUoAhRFBEACQCACBEAgACAKIAFBASAFQRhqECIiDhALRQ0BIAAgBSkDGBAKDAcLAkACQCAJECBFBEAgABAoQoCAgIAwIQkMAQsgACAJQQAQeSIJEAtFDQELQoCAgIAwIQwMBAsgACAFKQMYQQEQeSIMEAsNAyAFIAw3AwggBSAJNwMAIAAgCiABQQIgBRAiIg4QCw0DIAAgCRAKIAAgDBAKCyAAIA4QCiAAIAUpAxgQCgwBCwsgACAJEAogACALEAogACAIEAogACAKEAoMAgsgACAFKQMYEAogACAJEAogACAMEAoMAgtCgICAgDAhCAwBCyABIQ0MAQsgCBAgBEAgACAIQQEQsAEaCyAAIAsQCiAAIAgQCiAAIAoQCiAAIAEQCgsgBUEgaiQAIA0LBgBBkK8ECwYAQYyvBAsGAEGErwQLzQMDBXwBfgN/AkACQAJAAkAgAL0iBkIAWQRAIAZCIIinIgdB//8/Sw0BCyAGQv///////////wCDUARARAAAAAAAAPC/IAAgAKKjDwsgBkIAWQ0BIAAgAKFEAAAAAAAAAACjDwsgB0H//7//B0sNAkGAgMD/AyEIQYF4IQkgB0GAgMD/A0cEQCAHIQgMAgsgBqcNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIGQiCIpyEIQct3IQkLIAZC/////w+DIAhB4r4laiIHQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIAIAAgAEQAAAAAAADgP6KiIgOhvUKAgICAcIO/IgREAAAgZUcV9z+iIgEgCSAHQRR2arciAqAiBSABIAIgBaGgIAAgAEQAAAAAAAAAQKCjIgEgAyABIAGiIgIgAqIiASABIAFEn8Z40Amawz+iRK94jh3Fccw/oKJEBPqXmZmZ2T+goiACIAEgASABRERSPt8S8cI/okTeA8uWZEbHP6CiRFmTIpQkSdI/oKJEk1VVVVVV5T+goqCgoiAAIAShIAOhoCIAIASgRACi7y78Bec9oiAARAAAIGVHFfc/oqCgoCEACyAAC+YDAwZ8AX4DfwJAAkACQAJAIAC9IgdCAFkEQCAHQiCIpyIIQf//P0sNAQsgB0L///////////8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAdCAFkNASAAIAChRAAAAAAAAAAAow8LIAhB//+//wdLDQJBgIDA/wMhCUGBeCEKIAhBgIDA/wNHBEAgCCEJDAILIAenDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iB0IgiKchCUHLdyEKCyAKIAlB4r4laiIIQRR2arciBUQAYJ9QE0TTP6IiASAHQv////8PgyAIQf//P3FBnsGa/wNqrUIghoS/RAAAAAAAAPC/oCIAIAAgAEQAAAAAAADgP6KiIgOhvUKAgICAcIO/IgREAAAgFXvL2z+iIgKgIgYgAiABIAahoCAAIABEAAAAAAAAAECgoyIBIAMgASABoiICIAKiIgEgASABRJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgAiABIAEgAUREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKIgACAEoSADoaAiAEQAACAVe8vbP6IgBUQ2K/ER8/5ZPaIgACAEoETVrZrKOJS7PaKgoKCgIQALIAALoQEBBH8gAkEAIAAoAlQiAygCBCIEIAMoAgAiBWsiBiAEIAZJGyIESwRAIAAgACgCAEEQcjYCACAEIQILIAEgAygCDCAFaiACECMaIAMgAygCACACaiIFNgIAIAAgACgCLCIBNgIEIAAgASAAKAIwIgAgBCACayIEIAAgBEkbIgBqNgIIIAEgAygCDCAFaiAAECMaIAMgAygCACAAajYCACACC4sBAQF/IwBBEGsiAyQAAn4CQCACQQNPDQAgACgCVCEAIANBADYCBCADIAAoAgA2AgggAyAAKAIENgIMQQAgA0EEaiACQQJ0aigCACICa6wgAVUNACAAKAIIIAJrrCABUw0AIAAgAiABp2oiADYCACAArQwBC0HIrgRBHDYCAEJ/CyEBIANBEGokACABCwUAIACcCwUAIACZC6QBAgF/AX4gAL1C////////////AIMiAr8hAAJ8IAJCIIinIgFBwdyY/wNNBEBEAAAAAAAA8D8gAUGAgMDyA0kNARogABClAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCvBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAARAAAAAAAAPA/EIoGCwvHAQECfyMAQRBrIgEkAAJ8IAC9QiCIp0H/////B3EiAkH7w6T/A00EQEQAAAAAAADwPyACQZ7BmvIDSQ0BGiAARAAAAAAAAAAAENsCDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQsARBA3EOAwABAgMLIAErAwAgASsDCBDbAgwDCyABKwMAIAErAwhBARDaApoMAgsgASsDACABKwMIENsCmgwBCyABKwMAIAErAwhBARDaAgshACABQRBqJAAgAAsFACAAmwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICACHxCgICAgHyDvyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAucAwIDfgJ/IwBBIGsiCSQAAkAgBUEBcQRAIwBBIGsiCiQAQoCAgIDgACEIAkAgACAKQRhqIAFB3gAQhQEiBUUNACAFKQMAIgEQsgFFBEAgAEHfKUEAEBQMAQsgCikDGCIGEBAEQCAAIAEgAiADIAQQkAMhCAwBCwJAIAAgAyAEEJIDIgcQCw0AIAUpAwAhASAKIAI3AxAgCiAHNwMIIAogATcDACAAIAYgBSkDCEEDIAoQIiIBEAsgAUL/////b1ZyRQRAIAAgARAKIAAQKAwBCyABIQgLIAAgBhAKIAAgBxAKCyAKQSBqJAAgCCEGDAELQoCAgIDgACEGIAAgCUEYaiABQdoAEIUBIgVFDQAgCSkDGCEHIAUtABBFBEAgACAHEAogAEGiNkEAEBQMAQsgBxAQBEAgACAFKQMAIAIgAyAEECIhBgwBCyAAIAMgBBCSAyIIEAtFBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAiIQYLIAAgBxAKIAAgCBAKCyAJQSBqJAAgBguHAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAAnwgAUI0iKdB/w9xIgJB/QdNBEAgAkHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALELEDRAAAAAAAAOA/oiEACyAAIACaIAFCAFkbC6kDAgV/AX4gAL1C////////////AINCgYCAgICAgPj/AFQgAb1C////////////AINCgICAgICAgPj/AFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAELEEDwsgAkEedkECcSIGIAC9IgdCIIinIgNBH3ZyIQQCQCADQf////8HcSIDIAenckUEQAJAAkAgBEECaw4CAAEDC0QYLURU+yEJQA8LRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCADQYCAwP8HRw0BIARBA3RB0P8DaisDAA8LIANBgIDA/wdHIAJBgICAIGogA09xRQRARBgtRFT7Ifk/IACmDwsCfCAGBEBEAAAAAAAAAAAgA0GAgIAgaiACSQ0BGgsgACABo5kQsQQLIQACQAJAAkAgBA4DBAABAgsgAJoPC0QYLURU+yEJQCAARAdcFDMmpqG8oKEPCyAARAdcFDMmpqG8oEQYLURU+yEJwKAPCyAEQQN0QfD/A2orAwAhAAsgAAuyAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAIAFCNIinQf8PcSICQZkITwRAIAAQ2QJE7zn6/kIu5j+gIQAMAQsgAkGACE8EQCAAIACgRAAAAAAAAPA/IAAgAKJEAAAAAAAA8D+gnyAAoKOgENkCIQAMAQsgAkHlB0kNACAAIACiIgMgA0QAAAAAAADwP6CfRAAAAAAAAPA/oKMgAKAQsQMhAAsgACAAmiABQgBZGwu5AgMBfwN8AX4gAL0iBUIgiKdB/////wdxIgFBgIDA/wNPBEAgBacgAUGAgMD/A2tyRQRAIABEGC1EVPsh+T+iRAAAAAAAAHA4oA8LRAAAAAAAAAAAIAAgAKGjDwsCQCABQf////4DTQRAIAFBgIBAakGAgIDyA0kNASAAIAAgAKIQ3AKiIACgDwtEAAAAAAAA8D8gAJmhRAAAAAAAAOA/oiIDnyEAIAMQ3AIhBAJ8IAFBs+a8/wNPBEBEGC1EVPsh+T8gACAEoiAAoCIAIACgRAdcFDMmppG8oKEMAQtEGC1EVPsh6T8gAL1CgICAgHCDvyICIAKgoSAAIACgIASiRAdcFDMmppE8IAMgAiACoqEgACACoKMiACAAoKGhoUQYLURU+yHpP6ALIgAgAJogBUIAWRshAAsgAAt2AQF/IAC9QjSIp0H/D3EiAUH/B00EQCAARAAAAAAAAPC/oCIAIAAgAKIgACAAoKCfoBCxAw8LIAFBmAhNBEAgACAAoEQAAAAAAADwvyAAIACiRAAAAAAAAPC/oJ8gAKCjoBDZAg8LIAAQ2QJE7zn6/kIu5j+gC64CAwF8AX4BfyAAvSICQiCIp0H/////B3EiA0GAgMD/A08EQCACpyADQYCAwP8Da3JFBEBEAAAAAAAAAABEGC1EVPshCUAgAkIAWRsPC0QAAAAAAAAAACAAIAChow8LAnwgA0H////+A00EQEQYLURU+yH5PyADQYGAgOMDSQ0BGkQHXBQzJqaRPCAAIAAgAKIQ3AKioSAAoUQYLURU+yH5P6APCyACQgBTBEBEGC1EVPsh+T8gAEQAAAAAAADwP6BEAAAAAAAA4D+iIgCfIgEgASAAENwCokQHXBQzJqaRvKCgoSIAIACgDwtEAAAAAAAA8D8gAKFEAAAAAAAA4D+iIgCfIgEgABDcAqIgACABvUKAgICAcIO/IgAgAKKhIAEgAKCjoCAAoCIAIACgCwtaAgF/AX4CQEGwrgQoAgAEQEG0rgQoAgAhAgwBC0GwrgQQ1wUiAjYCAEG0rgQgAhDfBCICNgIACyACIAAgABBCQabvABC2BSIDIAEQqAMaQbSuBCgCACADEAoLC42hBFQAQYAIC9V7KCl7fQAoKXtzdXBlciguLi5hcmd1bWVudHMpO30AKCkgewogICAgW25hdGl2ZSBjb2RlXQp9AGNhbm5vdCBtaXggPz8gd2l0aCAmJiBvciB8fABwcm94eTogcHJvcGVydHkgbm90IHByZXNlbnQgaW4gdGFyZ2V0IHdlcmUgcmV0dXJuZWQgYnkgbm9uIGV4dGVuc2libGUgcHJveHkAcmV2b2tlZCBwcm94eQBQcm94eQBhZGRfcHJvcGVydHkAcHJveHk6IGNhbm5vdCBzZXQgcHJvcGVydHkAbm8gc2V0dGVyIGZvciBwcm9wZXJ0eQB2YWx1ZSBoYXMgbm8gcHJvcGVydHkAY291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eQBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAaGFzT3duUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWxldGVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AEpTX0RlZmluZVByb3BlcnR5ACFtci0+ZW1wdHkAaW5maW5pdHkASW5maW5pdHkAb3V0IG9mIG1lbW9yeQB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQBHZW5lcmFsX0NhdGVnb3J5AGV2ZXJ5AGFueQBhcHBseQAnJXMnIGlzIHJlYWQtb25seQBleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBzdGlja3kAc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAanNfZ2V0X2F0b21faW5kZXgAaW52YWxpZCBhcnJheSBpbmRleABvdXQtb2YtYm91bmQgbnVtZXJpYyBpbmRleABKU19BdG9tSXNBcnJheUluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AHBvdwBub3cAc3RhY2sgb3ZlcmZsb3cAbXVzdCBiZSBjYWxsZWQgd2l0aCBuZXcAaXNWaWV3AERhdGFWaWV3AHJhdwAldQBjbGFzcyBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmdW5jdGlvbiBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABsZXhpY2FsIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGR1cGxpY2F0ZSBhcmd1bWVudCBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAaW1wb3J0Lm1ldGEgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbnRleHQASlNfRnJlZUNvbnRleHQASlNDb250ZXh0AGpzX21hcF9pdGVyYXRvcl9uZXh0AGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dAB1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dAB0dABleHBvcnRlZCB2YXJpYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0AHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdAB0ZXN0AGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAZW5jb2RlVVJJQ29tcG9uZW50AGRlY29kZVVSSUNvbXBvbmVudAB1bmV4cGVjdGVkIGVuZCBvZiBjb21tZW50AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABwYXJzZUludABkdXBsaWNhdGUgZGVmYXVsdABzcGxpdABleHBlY3RpbmcgaGV4IGRpZ2l0AHRyaW1SaWdodAByZWR1Y2VSaWdodAB1bnNoaWZ0AHRyaW1MZWZ0AGludmFsaWQgb2Zmc2V0AGludmFsaWQgYnl0ZU9mZnNldABnZXRUaW1lem9uZU9mZnNldAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJveHk6IGluY29uc2lzdGVudCBzZXQAZmluZF9qdW1wX3RhcmdldABleHBlY3RpbmcgdGFyZ2V0AGludmFsaWQgZGVzdHJ1Y3R1cmluZyB0YXJnZXQAcHJveHk6IGluY29uc2lzdGVudCBnZXQAV2Vha1NldABjb25zdHJ1Y3QASlNfRnJlZUF0b21TdHJ1Y3QAdXNlIHN0cmljdABSZWZsZWN0AHJlamVjdABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABpbnZhbGlkIGJyYW5kIG9uIG9iamVjdABvcGVyYW5kICdwcm90b3R5cGUnIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3QAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAdG9vIG1hbnkgaW1icmljYXRlZCBxdWFudGlmaWVycwB1bmljb2RlX3Byb3Bfb3BzAGFjb3MAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAGJ5dGVjb2RlIGZ1bmN0aW9ucwBDIGZ1bmN0aW9ucwBwcm94eTogaW5jb25zaXN0ZW50IHByZXZlbnRFeHRlbnNpb25zAFNjcmlwdF9FeHRlbnNpb25zAGF0b21zAHByb3h5OiBwcm9wZXJ0aWVzIG11c3QgYmUgc3RyaW5ncyBvciBzeW1ib2xzAGdldE93blByb3BlcnR5U3ltYm9scwByZXNvbHZlX2xhYmVscwBKU19FdmFsVGhpcwBzdHJpbmdzAGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwB2YWx1ZXMAc2V0TWludXRlcwBnZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAZ2V0VVRDTWludXRlcwB0b28gbWFueSBjYXB0dXJlcwAgIHNoYXBlcwBnZXRPd25Qcm9wZXJ0eU5hbWVzAGdjX2ZyZWVfY3ljbGVzAGFkZF9ldmFsX3ZhcmlhYmxlcwByZXNvbHZlX3ZhcmlhYmxlcwB0b28gbWFueSBsb2NhbCB2YXJpYWJsZXMAdG9vIG1hbnkgY2xvc3VyZSB2YXJpYWJsZXMAY29tcGFjdF9wcm9wZXJ0aWVzACAgcHJvcGVydGllcwBkZWZpbmVQcm9wZXJ0aWVzAGVudHJpZXMAZnJvbUVudHJpZXMAdG9vIG1hbnkgcmFuZ2VzAGluY2x1ZGVzAHNldE1pbGxpc2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAGdldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAGdldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBnZXRVVENTZWNvbmRzAGl0YWxpY3MAYWJzAHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzACUuKnMAICglcwBzZXQgJXMAZ2V0ICVzACAgICBhdCAlcwBub3QgYSAlcwB1bnN1cHBvcnRlZCBrZXl3b3JkOiAlcwBzdWJzdHIAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAc3VwZXIoKSBpcyBvbmx5IHZhbGlkIGluIGEgZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3RvcgBwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBub3QgYSBjb25zdHJ1Y3RvcgBBcnJheSBJdGVyYXRvcgBTZXQgSXRlcmF0b3IATWFwIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBjYW5ub3QgaW52b2tlIGEgcnVubmluZyBnZW5lcmF0b3IAbm90IGEgZ2VuZXJhdG9yAEFzeW5jR2VuZXJhdG9yAHN5bnRheCBlcnJvcgBTeW50YXhFcnJvcgBFdmFsRXJyb3IASW50ZXJuYWxFcnJvcgBBZ2dyZWdhdGVFcnJvcgBUeXBlRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBVUklFcnJvcgBmbG9vcgBmb250Y29sb3IAYW5jaG9yAGZvcgBrZXlGb3IAZXhwZWN0aW5nIHN1cnJvZ2F0ZSBwYWlyAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBnZXR0ZXIgb3Igc2V0dGVyAGludmFsaWQgc2V0dGVyAGludmFsaWQgZ2V0dGVyAGZpbHRlcgBtaXNzaW5nIGZvcm1hbCBwYXJhbWV0ZXIAInVzZSBzdHJpY3QiIG5vdCBhbGxvd2VkIGluIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBvciBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcgBpbnZhbGlkIGNoYXJhY3RlcgB1bmV4cGVjdGVkIGNoYXJhY3RlcgBwcml2YXRlIGNsYXNzIGZpZWxkIGZvcmJpZGRlbiBhZnRlciBzdXBlcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAJ2xldCcgaXMgbm90IGEgdmFsaWQgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBvdGhlcgBhdG9tMV9pc19pbnRlZ2VyICYmIGF0b20yX2lzX2ludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBudW1iZXIAbm90IGEgbnVtYmVyAGxpbmVOdW1iZXIAbWFsZm9ybWVkIHVuaWNvZGUgY2hhcgBjbGVhcgBzZXRZZWFyAGdldFllYXIAc2V0RnVsbFllYXIAZ2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABpdGVyYXRvcl9jbG9zZV9yZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBhd2FpdCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AeWllbGQgaW4gZGVmYXVsdCBleHByZXNzaW9uAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ30nIGFmdGVyIHRlbXBsYXRlIGV4cHJlc3Npb24AdG9QcmVjaXNpb24AYXNpbgBqb2luAG1pbgBjb3B5V2l0aGluAHRlbXBsYXRlIGxpdGVyYWwgY2Fubm90IGFwcGVhciBpbiBhbiBvcHRpb25hbCBjaGFpbgBjaXJjdWxhciBwcm90b3R5cGUgY2hhaW4AYXNzaWduAGlzRnJvemVuAG1hcmtfY2hpbGRyZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBpbXVsAG5vdCBhIHN5bWJvbABTeW1ib2wAUmVnRXhwIGV4ZWMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsAHBhcmVudCBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgbnVsbABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgbnVsbABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwATnVsbABmaWxsAG5ldyBBcnJheUJ1ZmZlciBpcyB0b28gc21hbGwAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGNhbGwAZG90QWxsAG1hdGNoQWxsAHJlcGxhY2VBbGwAY2VpbAB1cGRhdGVfbGFiZWwAYmNfYnVmW3Bvc10gPT0gT1BfbGFiZWwAZXZhbABpbnZhbGlkIG51bWJlciBsaXRlcmFsAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwASlNfU2V0UHJvcGVydHlJbnRlcm5hbABKU19HZXRPd25Qcm9wZXJ0eU5hbWVzSW50ZXJuYWwAX19KU19FdmFsSW50ZXJuYWwAdG9FeHBvbmVudGlhbABzZWFsAGdsb2JhbABibGluawBfX2RhdGVfY2xvY2sAc3RhY2sAbHJlX2V4ZWNfYmFja3RyYWNrAHMtPmlzX3dlYWsAaQBzZXRNb250aABnZXRNb250aABzZXRVVENNb250aABnZXRVVENNb250aABpbnZhbGlkIGtleXdvcmQ6IHdpdGgAc3RhcnRzV2l0aABlbmRzV2l0aABwcm9wID09IEpTX0FUT01fbGVuZ3RoAGludmFsaWQgYXJyYXkgbGVuZ3RoAGludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aABpbnZhbGlkIGxlbmd0aABpbnZhbGlkIGJ5dGVMZW5ndGgATWF0aABwdXNoAGFjb3NoAEpTX1Jlc2l6ZUF0b21IYXNoAGFzaW5oAGF0YW5oAGJyZWFrIG11c3QgYmUgaW5zaWRlIGxvb3Agb3Igc3dpdGNoAG1hdGNoAGNhdGNoAHNlYXJjaABmb3JFYWNoAGxvZwBBcnJheSB0b28gbG9uZwBzdHJpbmcgdG9vIGxvbmcAQXJyYXkgbG9vIGxvbmcAc3Vic3RyaW5nAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBzdHJpbmcAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAG5vdCBhIHN0cmluZwBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAHRvU3RyaW5nAHRvRGF0ZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9UaW1lU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0dNVFN0cmluZwBKU1N0cmluZwB0b0lTT1N0cmluZwB0b1VUQ1N0cmluZwBkdXBsaWNhdGUgaW1wb3J0IGJpbmRpbmcAaW52YWxpZCBpbXBvcnQgYmluZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAGRpZmYgPT0gKGludDhfdClkaWZmAGRpZmYgPT0gKGludDE2X3QpZGlmZgBocmVmAGdjX2RlY3JlZgBmcmVlX3Zhcl9yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9nbG9iYWxfcmVmAHJlc2V0X3dlYWtfcmVmAGRlbGV0ZV93ZWFrX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBpbmRleE9mAGxhc3RJbmRleE9mAHZhbHVlT2YAc2V0UHJvdG90eXBlT2YAZ2V0UHJvdG90eXBlT2YAaXNQcm90b3R5cGVPZgAlLipmAGZvbnRzaXplAG5ld19zaXplIDw9IHNoLT5wcm9wX3NpemUAZGVzY3IgPCBydC0+YXRvbV9zaXplAGF0b20gPCBydC0+YXRvbV9zaXplAGNvbXB1dGVfc3RhY2tfc2l6ZQBuIDwgYnVmX3NpemUAbm9ybWFsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAFByb21pc2UAdG9Mb3dlckNhc2UAdG9Mb2NhbGVMb3dlckNhc2UAdG9VcHBlckNhc2UAdG9Mb2NhbGVVcHBlckNhc2UAaWdub3JlQ2FzZQBsb2NhbGVDb21wYXJlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJvdG90eXBlAHByb3h5OiBiYWQgcHJvdG90eXBlAG5vdCBhIHByb3RvdHlwZQBpbnZhbGlkIG9iamVjdCB0eXBlAHVuZXNjYXBlAG5vbmUAcmVzdCBlbGVtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lAG11bHRpbGluZQAgIHBjMmxpbmUAc29tZQBKU19GcmVlUnVudGltZQBKU1J1bnRpbWUAc2V0VGltZQBnZXRUaW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBpbnZhbGlkIGNsYXNzIHJhbmdlAG1lc3NhZ2UAYXN5bmNfZnVuY19mcmVlAGludmFsaWQgbHZhbHVlIGluIHN0cmljdCBtb2RlAGludmFsaWQgdmFyaWFibGUgbmFtZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQB1bmljb2RlACAgYnl0ZWNvZGUASlNGdW5jdGlvbkJ5dGVjb2RlAHNraXBfZGVhZF9jb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW1wb3J0Lm1ldGEgb25seSB2YWxpZCBpbiBtb2R1bGUgY29kZQBmcm9tQ2hhckNvZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAHJlZHVjZQBzb3VyY2UAJ3RoaXMnIGNhbiBiZSBpbml0aWFsaXplZCBvbmx5IG9uY2UAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBpbnZhbGlkIFVURi04IHNlcXVlbmNlAGNpcmN1bGFyIHJlZmVyZW5jZQBzbGljZQBzcGxpY2UAcmFjZQByZXBsYWNlACUrLiplAHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAG1hcF9kZWNyZWZfcmVjb3JkAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAb2JqZWN0IG5lZWRzIHRvSVNPU3RyaW5nIG1ldGhvZAAnc3VwZXInIGlzIG9ubHkgdmFsaWQgaW4gYSBtZXRob2QAZnJvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZABpbnRlcnJ1cHRlZAAlcyBvYmplY3QgZXhwZWN0ZWQAaWRlbnRpZmllciBleHBlY3RlZABieXRlY29kZSBmdW5jdGlvbiBleHBlY3RlZABzdHJpbmcgZXhwZWN0ZWQAZnJvbSBjbGF1c2UgZXhwZWN0ZWQAZnVuY3Rpb24gbmFtZSBleHBlY3RlZAB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAG1ldGEgZXhwZWN0ZWQAcmVqZWN0ZWQAbWVtb3J5IGFsbG9jYXRlZABtZW1vcnkgdXNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGFsbFNldHRsZWQAZnVsZmlsbGVkAGNhbm5vdCBiZSBjYWxsZWQAaXNTZWFsZWQAIXNoLT5pc19oYXNoZWQAdmFyX3JlZi0+aXNfZGV0YWNoZWQAQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQAYWRkACUrMDdkACUwNGQAJTAyZCUwMmQAJTAyZC8lMDJkLyUwKmQAJS4zcyAlLjNzICUwMmQgJTAqZAA6JWQAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZABzYwBqc19kZWZfbWFsbG9jAHRydW5jAGdjAGV4ZWMAL3RtcC9xdWlja2pzL3F1aWNranMuYwAvdG1wL3F1aWNranMvbGlicmVnZXhwLmMAL3RtcC9xdWlja2pzL2xpYnVuaWNvZGUuYwBzdWIAcHJvbWlzZV9yZWFjdGlvbl9qb2IAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgByd2EAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQAQllURVNfUEVSX0VMRU1FTlQAJTAyZDolMDJkOiUwMmQgR01UAEpTX1ZBTFVFX0dFVF9UQUcoc2YtPmN1cl9mdW5jKSA9PSBKU19UQUdfT0JKRUNUAHZhcl9raW5kID09IEpTX1ZBUl9QUklWQVRFX1NFVFRFUgBNQVhfU0FGRV9JTlRFR0VSAE1JTl9TQUZFX0lOVEVHRVIAaXNOYU4ARGF0ZSB2YWx1ZSBpcyBOYU4AdG9KU09OAEVQU0lMT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcASU5GADAxMjM0NTY3ODlBQkNERUYAU0laRQBNQVhfVkFMVUUATUlOX1ZBTFVFAE5BTUUAZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9HTE9CQUwgfHwgZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9NT0RVTEUAcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfSlNfT0JKRUNUIHx8IHAtPmdjX29ial90eXBlID09IEpTX0dDX09CSl9UWVBFX0ZVTkNUSU9OX0JZVEVDT0RFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAVVRDADxpbnB1dD4APGluaXRTY3JpcHQ+ADxldmFsU2NyaXB0PgA8c2V0PgA8YW5vbnltb3VzPgA8Y29tbUZ1bj4APGNhbGxFeHRlcm5hbEZ1bmN0aW9uPgA8bnVsbD4AJnF1b3Q7AHNldFVpbnQ4AGdldFVpbnQ4AHNldEludDgAZ2V0SW50OABtYWxmb3JtZWQgVVRGLTgAcmFkaXggbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2AHNldFVpbnQxNgBnZXRVaW50MTYAc2V0SW50MTYAZ2V0SW50MTYAYXJnYyA9PSA1AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAGV4cG0xAGxzLT5hZGRyID09IC0xAHN0YWNrX2xlbiA+PSAxAHAtPnNoYXBlLT5oZWFkZXIucmVmX2NvdW50ID09IDEAc3RhY2tfbGVuID09IDEAanNfZnJlZV9zaGFwZTAAbG9nMTAATE4xMABwLT5yZWZfY291bnQgPiAwAHZhcl9yZWYtPmhlYWRlci5yZWZfY291bnQgPiAwAHN0YWNrX3NpemUgPiAwAGNwb29sX2lkeCA+PSAwAHJ0LT5hdG9tX2NvdW50ID49IDAAbHMtPnJlZl9jb3VudCA+PSAwAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABwLT5yZWZfY291bnQgPT0gMABjdHgtPmhlYWRlci5yZWZfY291bnQgPT0gMABzaC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHAtPm1hcmsgPT0gMAAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAChuZXdfaGFzaF9zaXplICYgKG5ld19oYXNoX3NpemUgLSAxKSkgPT0gMABpICE9IDAAc2l6ZSAhPSAwAF4kXC4qKz8oKVtde318LwA8LwBtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgBhc3luYyBmdW5jdGlvbiAqAAp9KQBsaXN0X2VtcHR5KCZydC0+Z2Nfb2JqX2xpc3QpAGogPT0gKHNoLT5wcm9wX2NvdW50IC0gc2gtPmRlbGV0ZWRfcHJvcF9jb3VudCkASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAYnl0ZWNvZGUgYnVmZmVyIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIHVuZGVyZmxvdyAob3A9JWQsIHBjPSVkKQBpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQAoPzopAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQAtXy4hfionKCkAIGFub255bW91cygAU3ltYm9sKABleHBlY3RpbmcgJ30nAGNsYXNzIGNvbnN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQgd2l0aCAnbmV3JwBleHBlY3RpbmcgJ2FzJwB1bmV4cGVjdGVkIHRva2VuIGluIGV4cHJlc3Npb246ICclLipzJwB1bmV4cGVjdGVkIHRva2VuOiAnJS4qcycAcmVkZWNsYXJhdGlvbiBvZiAnJXMnAGR1cGxpY2F0ZSBleHBvcnRlZCBuYW1lICclcycAY2lyY3VsYXIgcmVmZXJlbmNlIHdoZW4gbG9va2luZyBmb3IgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAQ291bGQgbm90IGZpbmQgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAY291bGQgbm90IGxvYWQgbW9kdWxlICclcycAY2Fubm90IGRlZmluZSB2YXJpYWJsZSAnJXMnAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAdW5zdXBwb3J0ZWQgcmVmZXJlbmNlIHRvICdzdXBlcicAaW52YWxpZCB1c2Ugb2YgJ3N1cGVyJwAnZm9yIGF3YWl0JyBsb29wIHNob3VsZCBiZSB1c2VkIHdpdGggJ29mJwBleHBlY3RpbmcgJyVjJwB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAaW52YWxpZCB1c2Ugb2YgJ2ltcG9ydCgpJwBleHBlY3RpbmcgJSUAOy8/OkAmPSskLCMAPSIAc2V0IABnZXQgAFtvYmplY3QgAGFzeW5jIGZ1bmN0aW9uIABib3VuZCAAJS4zcywgJTAyZCAlLjNzICUwKmQgAGFzeW5jIAA6IAAgICAgICAgICAgAAopIHsKAApKU09iamVjdCBjbGFzc2VzCgAlLTIwcyAlOHMgJThzCgAgICU1ZCAgJTIuMGQgJXMKACAgJTN1ICsgJS0ydSAgJXMKACAgbWFsbG9jX3VzYWJsZV9zaXplIHVuYXZhaWxhYmxlCgAlLTIwcyAlOGxs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bmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAAAAAAQAAAAUAARQFAAEVBQABFQUAARcFAAEXAQABAAEAAQABAAEAAQABAAEAAQABAAEAAgABBQMAAQoBAQAAAQIBAAEDAgABAQIAAQIDAAECBAABAwYAAQIDAAEDBAABBAUAAQMDAAEEBAABBQUAAQICAAEEBAABAwMAAQMDAAEEBAABBQUAAwIBDQMBAQ0DAQANAwIBDQMCAA0DAAENAwMBCgEBAAABAAAAAQECAAEAAAABAgIAAQIAAAEBAAABAQAABgAAGAUBAQ8DAgEKAQIBAAEBAQABAQEABQABFwUAARcFAAEXBQEAFwUBABcFAgAXAQIDAAEDAAAGAAAYBgAAGAYBABgFAQEXBQECFwUCABcBAgEAAQMAAAEDAQABAgEAAQICAAEDAAABAwEAAQQAAAUCARcFAQEXAQICAAECAQAB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QAL6ADAB+wAwgfsAQCj8ADABEAFAEhEBMQEdAUCCHQEwgR4BMQEfAQGCHwFAgiABMIEhATABIgEwgSIBQAojAQEBKAEBgSgBAQEpAQCBKQEAASoBAAIrAQCBLAEAgS0BAQEuAQABMAEBgTABAIExAQGBMgEBATMBAAE0AQCBNAEBATUBAYE1AQEBNgEAgTcBAYE4AQABOQEAgToBAYE+AQABQAEBAUEBAIFBAQGBQwEAAUQBAIFEAQACRQEAAUYBAAFJAQGBTgEBAU8Bc4GiAUAEuAFAArsBAIO9ATCBvwEwAcMBMAPEATABxgEwAscB0AHIATCRyAEwidEBAAHWAQCD1gHTAdgBAJHYAXMB4QEAieEBAAHmAQCC5gEwgecBcwHoAXOB6AFzgeoBcwHrAQCB6wFAGOwBcwH4AXOB+AEAAfkBAIH5AaAB+gFzgfoBQIL7ATCB/AFAAv0BMIP+ATAQAAIwIAgCACAYAgAQKAJAIjACQDZFAjABYAJAjmACAIFnAkBgaAIwppgCAKawArWBwwIxJlAIMYFjCDGBZggAK2gIAIN+CBFQ0AkQBvgJIAb8CXQBQA50gUAOdAFBDnSBQQ50AUIOdIFCDnQBQw6AgUMOgAFEDjArSA4wg14OAYG8DgGBvg4BAccOQH4AD0AYPw+1AUsPtoFLD7YBTA+2gUwPtwFND4CBTQ8wAU8PQGBQDwAIgA8wCIQPAAaIDzAGjA8ACJAPMAiUDwAImA8wCJwPAAagDzAGpA+wAagPAIGoD9MBqQ8AgakP0wGqDwCBqg/TAasPAIGrDzCBrA8wga0PMIGuDzCBrw8ACLAPMAi0DwACuA8ABLkPAAK7DwECvA8BAr0PAQK+D7cIwA9nCMQPuAjID2gIzA+4CNAPaAjUDwAC2A+5AdkPsYHZD7kB2g+xAdsP14HbDzAC3A8wAt0PYQHeD3MB3w+5AeEPsoHhD7oB4g+yAeMP2IHjDzAE5A9iAeYPAALoD9AB6Q/QgekPsAHrD9CB6w8wAuwPMALtDwEC8A/TAfEP04HxD7oB8g8BgfIPsAHzD9OB8w8wAvQPMAL1DzEB9g+6AfkPsoH5D7sB+g+yAfsP2YH7DzAC/A8wAv0PYgH+D6ABkxCgAZUQoIGVEDEBmRABAacQMRCwEAEQuBBAgsEQMRpbEgEaaBIxLwAWAS8YFkACMBYwATEW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DgE4EiHBFSHlGSGqHSGM0UFK4SHwAQ4AAAAAQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEtheWFoX0xpLEthbGkAS2hhcm9zaHRoaSxLaGFyAEtobWVyLEtobXIAS2hvamtpLEtob2oAS2hpdGFuX1NtYWxsX1NjcmlwdCxLaXRzAEtodWRhd2FkaSxTaW5kAExhbyxMYW9vAExhdGluLExhdG4ATGVwY2hhLExlcGMATGltYnUsTGltYgBMaW5lYXJfQSxMaW5hAExpbmVhcl9CLExpbmIATGlzdSxMaXN1AEx5Y2lhbixMeWNpAEx5ZGlhbixMeWRpAE1ha2FzYXIsTWFrYQBNYWhhamFuaSxNYWhqAE1hbGF5YWxhbSxNbHltAE1hbmRhaWMsTWFuZABNYW5pY2hhZWFuLE1hbmkATWFyY2hlbixNYXJjAE1hc2FyYW1fR29uZGksR29ubQBNZWRlZmFpZHJpbixNZWRmAE1lZXRlaV9NYXllayxNdGVpAE1lbmRlX0tpa2FrdWksTWVuZABNZXJvaXRpY19DdXJzaXZlLE1lcmMATWVyb2l0aWNfSGllcm9nbHlwaHMsTWVybwBNaWFvLFBscmQATW9kaSxNb2RpAE1vbmdvbGlhbixNb25nAE1ybyxNcm9vAE11bHRhbmksTXVsdABNeWFubWFyLE15bXIATmFiYXRhZWFuLE5iYXQATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT3JpeWEsT3J5YQBPc2FnZSxPc2dlAE9zbWFueWEsT3NtYQBQYWhhd2hfSG1vbmcsSG1uZwBQYWxteXJlbmUsUGFsbQBQYXVfQ2luX0hhdSxQYXVjAFBoYWdzX1BhLFBoYWcAUGhvZW5pY2lhbixQaG54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ZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBkLkCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5f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dR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD/Sb4QvGm+AAAAAAAAAAAgAAAAYQACAAQABgC8AwgACgAMABUAlQClALkAwQDDAMcAywDRANcA3QDgAOYA+AAIAQoBcwAQARIBFAEgASwBRAFNAVMBYgFoAWoBdgGSAZQBqQG7AccB0QHVAbkC1wE7ANkB2wG3AOEB/AEMAhgCHQIjAicCowMzAj8CQgJLAk4CUQJdAmACaQJsAm8CdQJ4AoECigKcAp8CowKvArkCxQLJAs0C0QLVAucC7QLxAvUC+QL9AgUDCQMNAxMDFwMbAyMDJwMrAy8DNQM9A0EDSQNNA1EDCw9XA1sDXwNjA2cDawNvA3MDeQN9A4EDhQOJA40DkQOVA5kDnQOhA9wQpQPJA80D2QPdA+ED7wPxAz0ETwSZBPAEAgVKBWQFbAVwBXMFmgX6Bf4FBwYLBhQGGAYeBiIGKAaOBpQGmAaeBqIGqwasA/MGrQP2Bq4D+QavA/wGzAP/Bs0DAgfOAwUHCQcNBxEHhgMyBzUHuQM3BzsHiANTB4kDVgeQA2sHigN3B7ADiQeOA5kHnwejB4wDuAePA7sHtAC+B8AHwgcQIMsHLgDNB88HIADSB9YH2wffB+QH6gfwByAA9gcSIgEIBQgHCB0IJQgnCEMALQgwCJABNgg5CE4ARQhHCEwITghRCFoAqQNaAFMIVwhgCGkAYghlCG8IdAh6CH4IoghJAKQIpgipCFYAqwitCLAItAhYALYIuAi7CMAIwgjFCHYAxwjJCMwI0Ah4ANII1AjX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";if(!S(U)){var ia=U;U=b.locateFile?b.locateFile(ia,t):t+ia;}function ja(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(S(a))try{var c=ka(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){x(g);}}function la(){return v||"function"!==typeof fetch?Promise.resolve().then(function(){return ja();}):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return ja();});}function V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function W(a){var c=K(a)+1,d=M(c);C(a,D,d,c);return d;}function ma(){}var na=[null,[],[]];function oa(){function a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}var c=new Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[pa()>>2]=60*g;N[qa()>>2]=Number(c!=f);d=a(d);e=a(e);d=L(d);e=L(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}var ra;ma=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null;}catch(e){return b.HEAPU8[d]=1,W(e.message);}};var ka="function"===typeof atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return c;},sa={a:function(a,c,d,e){x("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},b:function(){x("");},g:ma,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},e:function(a){var c=D.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{y.grow(Math.min(2147483648,e)-ba.byteLength+65535>>>16);ca();var f=1;break a;}catch(g){}f=void 0;}if(f)return!0;}return!1;},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){var k=N[c>>2],m=N[c+4>>2];c+=8;for(var w=0;w<m;w++){var l=D[k+w],p=na[a];0===l||10===l?((1===a?aa:u)(J(p,0)),p.length=0):p.push(l);}f+=m;}N[e>>2]=f;return 0;},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0;},h:function(a,c){ra||(ra=!0,oa());a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+(a?4:0)>>2];N[c+40>>2]=a;return c;},i:function(a){a=H(a);window.console.log(a);},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){b.asm=f.exports;y=b.asm.k;ca();O=b.asm.t;ea.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function c(f){a(f.instance);}function d(f){return la().then(function(g){return WebAssembly.instantiate(g,e);}).then(function(g){return g;}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);x(g);});}var e={a:sa};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!==typeof WebAssembly.instantiateStreaming||S(U)||"function"!==typeof fetch?d(c):fetch(U,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(q);return{};})();b.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments);};b._init=function(){return(b._init=b.asm.o).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments);};var M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments);};b._free=function(){return(b._free=b.asm.s).apply(null,arguments);};var X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},qa=b.__get_daylight=function(){return(qa=b.__get_daylight=b.asm.v).apply(null,arguments);},pa=b.__get_timezone=function(){return(pa=b.__get_timezone=b.asm.w).apply(null,arguments);},F=b.stackSave=function(){return(F=b.stackSave=b.asm.x).apply(null,arguments);},G=b.stackRestore=function(){return(G=b.stackRestore=b.asm.y).apply(null,arguments);},B=b.stackAlloc=function(){return(B=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=A;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?b["_"+a]:function(){return A(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function ta(){Y||Z();Y||(R=ta);};function Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(ea);n(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();fa.unshift(c);}V(fa);}}if(!(0<P)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ha();V(da);0<P||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();return Module.ready;};})();var _default=Module;exports["default"]=_default;
+Object.defineProperty(exports, "__esModule", ({value:true}));exports["default"]=void 0;var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var c;c||(c=typeof Module!=='undefined'?Module:{});var h,n;c.ready=new Promise(function(a,b){h=a;n=b;});var r=Object.assign({},c),t="";"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1):t="";var aa=c.print||console.log.bind(console),u=c.printErr||console.warn.bind(console);Object.assign(c,r);r=null;var v;c.wasmBinary&&(v=c.wasmBinary);var noExitRuntime=c.noExitRuntime||!0;"object"!=typeof WebAssembly&&w("no native wasm support detected");var x,y=!1;function z(a,b,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var S=(l.length<<2)+1;p=A(S);B(l,C,p,S);}return p;},array:function(l){var p=A(l.length);D.set(l,p);return p;}};a=c["_"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var q=f[d[m]];q?(0===k&&(k=E()),g[m]=q(e[m])):g[m]=e[m];}d=a.apply(null,g);return d=function(l){0!==k&&F(k);return"string"===b?G(l):"boolean"===b?!!l:l;}(d);}var H="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(a,b){for(var d=b+NaN,e=b;a[e]&&!(e>=d);)++e;if(16<e-b&&a.buffer&&H)return H.decode(a.subarray(b,e));for(d="";b<e;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var k=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else d+=String.fromCharCode(f);}return d;}function G(a){return a?I(C,a):"";}function B(a,b,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;b[d++]=g;}else{if(2047>=g){if(d+1>=e)break;b[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;b[d++]=224|g>>12;}else{if(d+3>=e)break;b[d++]=240|g>>18;b[d++]=128|g>>12&63;}b[d++]=128|g>>6&63;}b[d++]=128|g&63;}}b[d]=0;}}function J(a){for(var b=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:b+4;}return b;}function K(a){var b=J(a)+1,d=L(b);d&&B(a,D,d,b);return d;}var M,D,C,N;function ba(){var a=x.buffer;M=a;c.HEAP8=D=new Int8Array(a);c.HEAP16=new Int16Array(a);c.HEAP32=N=new Int32Array(a);c.HEAPU8=C=new Uint8Array(a);c.HEAPU16=new Uint16Array(a);c.HEAPU32=new Uint32Array(a);c.HEAPF32=new Float32Array(a);c.HEAPF64=new Float64Array(a);}var O,ca=[],da=[],ea=[];function fa(){var a=c.preRun.shift();ca.unshift(a);}var P=0,Q=null,R=null;function w(a){if(c.onAbort)c.onAbort(a);a="Aborted("+a+")";u(a);y=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");n(a);throw a;}function T(a){return a.startsWith("data:application/octet-stream;base64,");}var U;U="data:application/octet-stream;base64,AGFzbQEAAAAByQZtYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfwBgAXwBfGACf34BfmAEf39/fwF/YAJ/fgBgAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39/fwBgBH9/fn8Bf2ADf39/AX5gBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAABgBX9/f39/AGAEf35+fwBgBX9+fn5/AX9gB39/f39/f38Bf2AGf35/fn5/AX9gBH9+f34BfmACfn8Bf2AEf35+fwF/YAJ+fwBgCX9/f39/f39/fwF/YAR/fn5/AX5gBn9/f39/fwF+YAN/fn4AYAR/fn9/AX9gBX9+fn9/AGACfn4BfmAHf35/f39/fwF+YAF/AXxgA39/fgBgBH9+f38AYAR/fn9+AX9gBH9+fn4Bf2AEf39/fgF/YAh/f39/f39/fwF/YAd/f39/f39/AGACfH8BfGADfn9/AX9gA3x8fwF8YAR/f35/AGAEf35+fgF+YAABf2AGf3x/f39/AX9gAAF8YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2AGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAJ/fwF8YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2AEf39/fgF+YAJ8fwF/YAJ8fAF/YAh/fn5+fn9+fgF+YAN/fnwBfmAAAX5gAn5+AXxgA35+fgF/YAN/f3wAAkkMAWEBYQAXAWEBYgAkAWEBYwAKAWEBZABFAWEBZQADAWEBZgAGAWEBZwADAWEBaAABAWEBaQA2AWEBagAEAWEBawAHAWEBbAAXA9QI0ggLEAMgAwQQA0YGBkcDAgMhAwEDNwMDEBEiATgLEAcECQENCQICAwwcBgQiAw0dAw0dCQIGKw4BBAcEBw45SAIBAwIDCgYdBw8CCRAKAQoeDgQDBAMMAQQJFkkGBgYNEwMCJQMPOgccJgEHDAEjARMPBBwCARRKBAoDBBAYBgEBAiwtAg0QOhQdCwQCBw0EBBMNGhAhCRYNLQwGDS4EAQdLCgMnLw4EABMCEAEKTAYBAjwEBk0CBA0PDg4ODgYHAjAGAgIxTk8UEz0bBwQUARYCDhMyLAEnA1ABAjABAgc+ASE9AgcHAgQWAwQPEAQNAwQJARlRBAYzAgYDUgIEFChTBQ0/Aw4DAQ4eAjkhDQkBLAIBAwcEJgMEKwEICAQEGwIHBiUJFgYUAQQCBgEEDgUyAzRUAgIEDFVWBAVXARYXB1gnGA8DFAYGAgECARkKCEAfBAQCAgoBBAIEAgYNADAEGRoKAQIKBgoBBAMEAQQBAgM0QQ4gAFkXDwQDWgQMBwMWAyINDBkbD1sGAQEGIgUPAw0DCgICXAECAgwrEDgKFwMBBxcCCC0IBAIBAQYKBAEEPAIGAwkUAQMAAgMBCgIuAQcBAgICFA0BCgIKCgIXIBBdNwMTAxAEEwQCBBYOBxcUAwIGEQNeXy8ZEBsIYAlhYgBCGgIdHQ0WAQINKTEKDhUADj8KAwQCAQRjGAkNEAQZCQMGDxgCAgMCAxwGFGQHAgEECAdlCCQbAgICFwQHBAoEAgECBAECKCgCAWYADw8BAQ0JBAEAAGcgCQUABSEAHhsbAQQDAy4UAQEDAgICCxABAwIEAQIBBwIMFAQEBCA0BWgyQSQDCQMDCwYGAQ4qCQoHDAADIAEGFQkQHh8FDAcQAw8FGwoXAQIHEQwFAGkOAwMDJgUFBSUCGjUMAgIiAgEEAgIDBgEHAiceEwwYQgMODgYJCgINDhhDDAceHiUBEAMEGQEZBAECAgIBAwAKBWoxHGsDAgIEFwQoPkA2HRwmHAQCAx8EbAYHHwEACB8CCAA1AAAGBgYGBgYGBgYGBQUAAAABDAEMAQwBDAEMAQwBDAEMBQAkBQEAAAAABQAACQAFAA8JAAUPEgAACQAAAAAAAAAAAAAAAAgAAAgIBRIFBQAAAAUFBQAAAAAABQUFBQAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAUFAwAAAAAABQAABQEAAAAFAAAFAAUFAAkJAAAAAAUFFgkAAAAAAAAAAAAFAAAABQUAAAAFAAUAAAIAAAAAAAAFAAAAEgUSBQAAEgUSEhIAAAAZEQsRCwsLEQsSEgUFDwUFBQUFEgApKhMjEzsYEQsAABIJAAAAAAAAAAAPCQkAIxMYExIZIwEaGhoBAxELEQsLCxELEQsLCxELEQsRCxELCxELEQsGGRUVFRUBAwMDFRUVFQAEB0MAAQADRAgICAAPAQUICAgICAEPCAgICBUICAgfCAgIAwQHAXAB+AL4AgUHAQGAAoCAAgYJAX8BQZDBxAILB0ANAW0CAAFuALMEAW8A3QgBcACBBQFxAL8HAXIAiAcBcwCzBgF0AKMCAXUA6QEBdgEAAXcAvQgBeAC8CAF5ALsICfUFAQBBAQv3ApUEsQiwCK8Irgi1CLQIswjBB9sEqweQB4MH6gbpAr4GsgbJBJ4GkQaQBo8GjgbVCIkGyQjGCMAIvgjsBboIuQi4CLcItgjqBYQErQiyCIsImgWKCOcB4QfYB6wIjQiQBesH1AfTB9IH0AfMB8oHkge1BqsIqgipCKgIpwinBaYIpQikCKMIogihCKAInwieCJ0InAibCJoImQiYCPADlwjwA5YIlQiUCJMIjAiICIcIhgiJCKUFkgiRCPUH9AfzB/IH8QfwB+8H7gftB+AH3wfeB/AD3QenBdwH2wfaB9kHkAiPCI4IhQiECIMIggiBCIAI/wf+B/0H/Af7B/oH+Qf4B/cH9gfsB+oH6QfoB+cH5gflB+QH4wfiB9cH1gfVB4wC0QfPB84HzQfLB8kHqQXIB8cHxgfFB/0ExAfDB8IHqgXAB74HvQe8B7sHuge5B7gHtweyBbYHtQfZBLQHsweyB9cEsQewB68HrgfYBK0HrAeqB6kHqAenB6YHpQekB6MHmgOiB6EHoAefB54HnQecB5sHmgeZB5gHlwf9A5YHlQexBbMFlAeTB5EHjweOB40HjAeLB4oHiQfTBNIEhweGB4UHhAeCB4EHgAf/Bv4G/Qb8BvsG+gb5BvgG9wb2BvUG9AbzBvIG8QbwBu8G7gbtBuwG6wbpBugG5wbmBuUG5AbjBuIG4QbgBt8G3gbdBtwG2wbSCNEI1gjaBsoIjQbbCLIE2QjUCK8E2gKZBcwIxQjDCNkG0wjLCMQI3AjaCNgIpgKzA80IzgjXCNgG1wbWBtUG1AbTBtIG0QbQBs8GzgbNBswGywbKBskGyAbHBsYGxQbEBsMGwgbLBMEGygTABr8GvQa8BrsGuga5BrgGtwa2BrQGsQagBp8GnQacBq4GsAasBqoGqAamBqQGogatBq8GqwapBqcGpQajBqEGxwSbBpoGmQaYBpcGlgaVBpQGkwaSBoUExwTQCIgGzwiVBJUEyAjHCMIIwQi/CArDuBLSCDUBAX8CQCABQiCIp0F1SQ0AIAGnIgIgAigCACICQQFrNgIAIAJBAUoNACAAKAIQIAEQhgULCxMAIABCgICAgHCDQoCAgIDgAFELTQECfyAAKAJAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcABEBAgAyAAKAIEEB4gAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEBALIgEBfyAAQiCIp0F1TwRAIACnIgEgASgCAEEBajYCAAsgAAsoAQF/IwBBEGsiAiQAIAIgAToADyAAIAJBD2pBARCKARogAkEQaiQAC5sWAgZ/AX4jAEEQayICJAAgACAAQRBqIgQQjwIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgM2AhQCQAJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASwAACIFQf8BcSIGDn0AFxcXFxcXFxcEAwQEAhcXFxcXFxcXFxcXFxcXFxcXFwQSGAgHDBMYFxcLDRcOCQUKHBwcHBwcHBwcFxcPERAWFwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwYXFAcBBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXFRcLIAEgACgCPEkNGiAEQap/NgIADB8LIAAgAUEBahDZAw0cIAIgACgCODYCDAweCyABQQFqIAEgAS0AAUEKRhshAQsgAiABQQFqNgIMDB4LIAIgAUEBajYCDAweCwJAAkAgAS0AASIDQSpHBEAgA0EvRg0BIANBPUcNAiACIAFBAmo2AgwgBEGGfzYCAAwdCyACIAFBAmoiATYCDANAAkACQAJAAkACQAJAIAEtAAAiA0EKaw4EAQMDAgALIANBKkcEQCADDQMgASAAKAI8SQ0EIABB3RhBABAVDCELIAEtAAFBL0cNAyACIAFBAmo2AgwMJQsgAEEBNgIwIAAgACgCCEEBajYCCCACIAFBAWo2AgwMAwsgAEEBNgIwIAIgAUEBajYCDAwCCyADQRh0QRh1QQBODQAgAUEGIAJBDGoQYSIBQX5xQajAAEYEQCAAQQE2AjAMAgsgAUF/Rw0BIAIgAigCDEEBajYCDAwBCyACIAFBAWo2AgwLIAIoAgwhAQwACwALIAFBAmohAUEADBULIAIgAUEBajYCDCAEQS82AgAMGgsgAS0AAUH1AEcNFCACIAFBAWo2AgQCQCACQQRqQQEQgwIiAUEATgRAIAEQxQINAQsgAigCDCEBDBULIAIgAigCBDYCDCACQQE2AggMFgsgAkEANgIIIAIgAUEBajYCDCAGIQEMFQsgAiABQQFqIgU2AgwgAiABQQJqNgIEQdwAIQMCQCABLQABIgZB3ABGBEAgAS0AAkH1AEcNASACQQRqQQEQgwIhAwwBCyAGIgNBGHRBGHVBAE4NACAFQQYgAkEEahBhIQMLIAMQxQJFBEAgAEGpzwBBABAVDBYLIAIgAigCBDYCDCACQQA2AgggACACQQxqIAJBCGogA0EBEPcEIgFFDRUgAEGpfzYCECAAIAE2AiAMFwsgAS0AASIDQS5GBEAgAS0AAkEuRw0SIAIgAUEDajYCDCAEQaV/NgIADBcLIANBMGtB/wFxQQpPDREMEgsgAS0AARBFRQ0RIAAoAkAtAG5BAXFFDREgAEHP1ABBABAVDBMLIAEtAAEiA0EqRwRAIANBPUcNECACIAFBAmo2AgwgBEGFfzYCAAwVCyABLQACQT1GBEAgAiABQQNqNgIMIARBkH82AgAMFQsgAiABQQJqNgIMIARBo382AgAMFAsgAS0AAUE9Rw0OIAIgAUECajYCDCAEQYd/NgIADBMLIAEtAAEiA0ErRwRAIANBPUcNDiACIAFBAmo2AgwgBEGIfzYCAAwTCyACIAFBAmo2AgwgBEGVfzYCAAwSCyABLQABIgVBLUcEQCAFQT1HDQ0gAiABQQJqNgIMIARBiX82AgAMEgsCQCAAKAJIRQ0AIAEtAAJBPkcNACAAKAIEIANHDQsLIAIgAUECajYCDCAEQZR/NgIADBELAkACQAJAIAEtAAEiA0E8aw4CAQACCyACIAFBAmo2AgwgBEGafzYCAAwSCyABLQACQT1GBEAgAiABQQNqNgIMIARBin82AgAMEgsgAiABQQJqNgIMIARBln82AgAMEQsgACgCSEUgA0EhR3INCyABLQACQS1HDQsgAS0AA0EtRg0JDAsLAkACQCABLQABQT1rDgIAAQwLIAIgAUECajYCDCAEQZx/NgIADBALAkACQAJAIAEtAAJBPWsOAgEAAgsgAS0AA0E9RgRAIAIgAUEEajYCDCAEQYx/NgIADBILIAIgAUEDajYCDCAEQZh/NgIADBELIAIgAUEDajYCDCAEQYt/NgIADBALIAIgAUECajYCDCAEQZd/NgIADA8LAkACQCABLQABQT1rDgIAAQsLIAEtAAJBPUYEQCACIAFBA2o2AgwgBEGefzYCAAwQCyACIAFBAmo2AgwgBEGdfzYCAAwPCyACIAFBAmo2AgwgBEGkfzYCAAwOCyABLQABQT1HDQggAS0AAkE9RgRAIAIgAUEDajYCDCAEQaB/NgIADA4LIAIgAUECajYCDCAEQZ9/NgIADA0LIAEtAAEiA0EmRwRAIANBPUcNCCACIAFBAmo2AgwgBEGNfzYCAAwNCyABLQACQT1GBEAgAiABQQNqNgIMIARBkX82AgAMDQsgAiABQQJqNgIMIARBoX82AgAMDAsgAS0AAUE9Rw0GIAIgAUECajYCDCAEQY5/NgIADAsLIAEtAAEiA0H8AEcEQCADQT1HDQYgAiABQQJqNgIMIARBj382AgAMCwsgAS0AAkE9RgRAIAIgAUEDajYCDCAEQZJ/NgIADAsLIAIgAUECajYCDCAEQaJ/NgIADAoLIAEtAAEiA0EuRwRAIANBP0cNBSABLQACQT1GBEAgAiABQQNqNgIMIARBk382AgAMCwsgAiABQQJqNgIMIARBpn82AgAMCgsgAS0AAkEwa0H/AXFBCkkNBCACIAFBAmo2AgwgBEGnfzYCAAwJCyAFQQBODQMgAUEGIAJBDGoQYSIBQX5xQajAAEYEQCAAKAIIIQMMCwsgARDlAg0LIAEQxQIEQCACQQA2AggMBgsgAEGOL0EAEBUMBgsgACAGQQEgAUEBaiAEIAJBDGoQkgNFDQcMBQtBAQshAwNAAn8CQAJAAkACQCADRQRAIAIgATYCDAwBCyABLQAAIgNFDQICQCADQQprDgQPAAAPAAsgA0EYdEEYdUEATg0DIAFBBiACQQxqEGEiA0F+cUGowABGDQ4gAigCDCEBIANBf0YNAQtBASEDDAQLIAFBAWoMAgsgASAAKAI8Tw0LCyABQQFqCyEBQQAhAwwACwALIAQgBjYCACACIAFBAWo2AgwMBAsgACgCACABIAJBDGpBAEE0EMQCIgcQDQ0BAkAgB0KAgICAcINCgICAgMB+UgRAIAIoAgxBBiACQQhqEGEQwQFFDQELIAAoAgAgBxAMIABB/j5BABAVDAILIABBgH82AhAgACAHNwMgDAMLIAAgAkEMaiACQQhqIAFBABD3BCIBRQ0AIAAgATYCICACKAIIIQYgAEEANgIoIAAgBjYCJAJAIAFBJUkNACABQS1NBEAgACgCQCIDLQBuQQFxDQEgAUEtRw0DIAMvAWwiBUEBcQ0BIAVBgP4DcUGABkcNAyADKAJkDQMgAygCBCIDRQ0DIAMtAGxBAXENAQwDCyABQS5HDQIgACgCRA0AIAAoAkAiAy8BbCIFQQJxDQAgBUGA/gNxQYAGRw0CIAMoAmQNAiADKAIEIgNFDQIgAy0AbEECcUUNAgsgBgRAIABBg382AhAgAEEBNgIoDAMLIAQgAUHWAGs2AgAMAgsgBEGofzYCAEF/DAILIARBg382AgALIAAgAigCDDYCOEEACyEAIAJBEGokACAADwsgAEEBNgIwIAAgA0EBajYCCAsgAigCDCEBDAALAAsSACAAQoCAgIBwg0KAgICAMFELFQAgARDyAUUEQCAAKAIQIAEQhAULC9AGAgV/AX4jAEEgayIHJABCgICAgOAAIQoCQAJAAkACQAJAAkACQAJAAkACQCABQiCIpyIGQQFqDggDBQUAAQUFCQILIAAgAkHHPRDIAQwGCyAAIAJBwOAAEMgBDAULIAZBeUYNAQwCCyABpyEGDAILIAGnIQYgAhBeBEAgAhB8IgUgBikCBCIKp0H/////B3FPDQEgBkEQaiECIAACfyAKQoCAgIAIg1BFBEAgAiAFQQF0ai8BAAwBCyACIAVqLQAAC0H//wNxEKYDIQoMBQsgAkEwRw0AIAYpAgRC/////weDIQoMBAsgACABEJ0EpyIGRQ0CCwNAIAYoAhAiCCAIKAIYIAJxQX9zQQJ0aigCACEFIAgQKiEJAkADQCAFRQ0BIAIgCSAFQQFrQQN0IgVqIggoAgRHBEAgCCgCAEH///8fcSEFDAELCyAGKAIUIAVqIQUCQAJAAkACQCAIKAIAQR52QQFrDgMAAQIDCyAFKAIAIgJFDQYgACACrUKAgICAcIQQDyADQQBBABA2IQoMBwsgBSgCACgCECkDACIBEIYBBEAgACACEOIBDAULIAEQDyEKDAYLIAAgBiACIAUgCBDRAkUNAgwDCyAFKQMAEA8hCgwECwJAIAYtAAUiBUEEcUUNACAFQQhxBEAgAhBeBEAgAhB8IgUgBigCKEkEQCAAIAatQoCAgIBwhCAFEHshCgwHCyAGLwEGQRVrQf//A3FBCUkNBQwCCyAGLwEGQRVrQf//A3FBCEsNASAAIAIQpQMiBUUNAUKAgICA4ABCgICAgDAgBUEASBshCgwFCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQAgBSgCFARAIAAgBq1CgICAgHCEEA8iASACIAMgBSgCFBEqACEKIAAgARAMDAULIAUoAgBFDQAgACAHIAatQoCAgIBwhBAPIgEgAiAFKAIAERgAIQUgACABEAwgBUEASA0CIAVFDQAgBy0AAEEQcQRAIAAgBykDGBAMIAAgBykDECADQQBBABA2IQoMBQsgBykDCCEKDAQLIAYoAhAoAiwiBg0AC0KAgICAMCEKIARFDQIgACACENACC0KAgICA4AAhCgwBC0KAgICAMCEKCyAHQSBqJAAgCgtfAQJ/IwBBEGsiBCQAIAAoAgAhAyAEIAI2AgwgA0EDIAEgAkEAENsFIAMgAygCECkDgAEgACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEMcCIARBEGokAAsNACAAIAEgAkEEEK8DCzcBAX5CgICAgMB+IAC9IgFCgICAgMCBgPz/AH0gAUL///////////8Ag0KAgICAgICA+P8AVhsLDwAgACgCQEGAAmogARAxCysAIAEQ8gFFBEAgACgCECgCOCABQQJ0aigCACIAIAAoAgBBAWo2AgALIAELCwAgACgCECABECELKQAgACABIAIgA0KAgICAMEKAgICAMCAEQYDOAHIQeCECIAAgAxAMIAILDwAgACAAKAIAIAEQGRA6C0oAIAAQ9QJFBEBBfw8LIAJBAEgEQCAAEDUhAgsgACABQf8BcRAOIAAgAhA6IAAoAkAoAqQCIAJBFGxqIgAgACgCAEEBajYCACACCygBAX8jAEEQayICJAAgAiABNgIMIAAgAkEMakEEEIoBGiACQRBqJAALGAEBfiABKQMAIQMgASACNwMAIAAgAxAMCzEAIAFBAE4EQCAAQbQBEA4gACABEDogACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLEQAgAEEQaiABIAAoAgQRAwALCwAgAEL/////b1YLGAAgAUKAgICAYFoEQCAAIAGnIAIRAwALCxcAIAAgASACQoCAgIAwIAMgBEECEOMBCzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAvkBAICfgZ/IANBACADQQBKGyELA0AgCiALRwRAIAAgAiAKQQR0aiIDKAIAELUFIQYjAEHgAGsiCSQAIAMtAAQhB0KAgICAMCEEAkACQAJAAkACQAJAAkACQAJAAkAgAy0ABQ4KAQICBQcDBAgFAAYLIAAgAygCCBC1BSEIAn4CQAJAAkAgAygCDEEBag4DAgABCQsgACAAKQPAASIEIAggBEEAEBQMAgsgACAAKAIoKQMQIgQgCCAEQQAQFAwBCyAAIAEgCCABQQAQFAshBCAAIAgQEyAGQcIBRgRAQQEhBwwICyAGQcsBRw0HQQAhBwwHCwJAIAZBwgFGBEBBASEHDAELIAZBywFHDQBBACEHCyAAIAEgBkECIAMgBxCUAxoMBwsgACABIAZCgICAgDAgAygCCAR+IAkgAygCADYCECAJQSBqIghBwABBoyggCUEQahBXGiAAIAMoAgggCEEAQQpBCCADLQAFQQJGGyADLgEGEMsBBUKAgICAMAsiBCADKAIMBH4gCSADKAIANgIAIAlBIGoiCEHAAEGcKCAJEFcaIAAgAygCDCAIQQFBC0EJIAMtAAVBAkYbIAMuAQYQywEFQoCAgIAwCyIFIAdBgDpyEHgaIAAgBBAMIAAgBRAMDAYLIAMpAwgiBEKAgICACHxC/////w9YBEAgBEL/////D4MhBAwFCyAEuRAXIQQMBAsgAysDCBAXIQQMAwsgACABIAZBAiADIAcQlAMaDAMLEAEACyADNQIIIQQLIAAgASAGIAQgBxAbGgsgCUHgAGokACAAIAYQEyAKQQFqIQoMAQsLCzIBAX8CQCABQiCIp0F1SQ0AIAGnIgIgAigCACICQQFrNgIAIAJBAUoNACAAIAEQhgULCxIAIABCgICAgHCDQoCAgIAgUQsLACAAQfQcQQAQFgsHACAAQTBqC54BAQF+AkACQAJAAkACQAJAAkAgARBWQQhqDhAFAwAAAAAAAQIEAAAAAAECAAsgAEGJHEEAEBZCgICAgOAADwsgARAPDwsgAEEEEKQBIQIMAwsgACAAQQUQpAEiAkEwIAGnKQIEQv////8Hg0EAEBsaDAILIABBBhCkASECDAELIABBBxCkASECCyACEA1FBEAgACACIAEQDxDPAQsgAguzBAELfyMAQRBrIggkACAAKAIAIQUgCCACNgIMQX8hCQJAA0ACQCAIIAIiA0EEaiICNgIMIAMoAgAiB0F/Rg0AIAAoAgQhCgNAIAEiBCAKTg0DIAQgBCAFaiILLQAAIgZBAnQiDEGwmgFqLQAAaiIBIApKDQMgBkHAAUYEQCALKAABIQkMAQsLIAYgB0cEQCAHQf8BcSAGRiAHQQh2Qf8BcSAGRnIgB0EQdkH/AXEgBkZyRSAHQRh2IAZHcSAGRSAHQYACSXJyDQMgACAGNgIQCyAEQQFqIQQCQAJAAkACQAJAAkACQAJAIAxBs5oBai0AAEEFaw4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARAMIARC/////weDQgBSDwsgAactAAUhAiAAIAEQDCACQX9zQYABcUEHdg8LIANBB2tBbU0EQCABEEkiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAxBASECCyACCwsAIAAgAUEAEKAECxkAIAAoAhAgARDoASIBRQRAIAAQyQELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEG8/QAgAhAVQX8MAQsgABARCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIoBGiACQRBqJAALCwAgACABQQEQ4gULxQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA1giDUIgiCEOIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyAMIAMgDCAMUCIIG3kgCEEGdK18pyIIQQ9rEHMgBiAIa0EQaiEGIAUpA0ghDCAFKQNAIQMLIANCD4YiC0KAgP7/D4MiAiABQiCIIgR+IhAgC0IgiCITIAFC/////w+DIgF+fCIPQiCGIhEgASACfnwiCyARVK0gAiANQv////8PgyINfiIVIAQgE358IhEgDEIPhiADQjGIhCISQv////8PgyIDIAF+fCIUIA8gEFStQiCGIA9CIIiEfCIPIAIgDkKAgASEIgx+IhYgDSATfnwiDiASQiCIQoCAgIAIhCICIAF+fCIQIAMgBH58IhJCIIZ8Ihd8IQEgByAJaiAGakH//wBrIQYCQCACIAR+IhggDCATfnwiBCAYVK0gBCAEIAMgDX58IgRWrXwgAiAMfnwgBCAEIBEgFVStIBEgFFatfHwiBFatfCADIAx+IgMgAiANfnwiAiADVK1CIIYgAkIgiIR8IAQgAkIghnwiAiAEVK18IAIgAiAQIBJWrSAOIBZUrSAOIBBWrXx8QiCGIBJCIIiEfCICVq18IAIgAiAPIBRUrSAPIBdWrXx8IgJWrXwiBEKAgICAgIDAAINQRQRAIAZBAWohBgwBCyALQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiALIAEgBkH/AGoiBhBzIAVBIGogAiAEIAYQcyAFQRBqIAsgASAHEKECIAUgAiAEIAcQoQIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhCyAFKQMoIAUpAxiEIQEgBSkDACECIAUpAwgMAQsgBEL///////8/gyAGrUIwhoQLIAqEIQogC1AgAUIAWSABQoCAgICAgICAgH9RG0UEQCAKIAJCAXwiASACVK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/ENADCyEAIAAgASACQoCAgIAwIAMgBEECEOMBIQIgACABEAwgAgsZACABBEAgACABQRBrrUKAgICAkH+EEAwLC28BAn8gAUIgiKciAyABpyICQQBIckUEQCACEJUBDwsgA0F4RgRAIAAgACgCECACENYCEBkPC0EAIQIgACABEJgEIgEQDQR/QQAFIAFCgICAgHCDQoCAgICAf1EEQCAAIAEQmAIPCyAAIAGnEKUECwvrAQICfwF+QoCAgIDgACEDIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACABEBogAEEANgIEIAAoAgBBLxAyDwsgACgCDCACSgRAIAAoAgAoAhAgASACIAAoAhAiAXQgAWtBEWoQ5wEiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC/////3eDhCIDNwIEIAEgA0KAgICAeIMgADUCCEL/////B4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEB4LSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALCxAAIAAgACgCKCkDCEEBEFMLFAEBfiAAIAEQLiECIAAgARAMIAILcgEBfwJ/IAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQ1QINARoLAkAgACgCEARAIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAwBCyAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABALQQALCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDZAhogA0EQaiQACygBAX8CQCAAQoCAgIBwVA0AIAEgAKciAS8BBkcNACABKAIgIQILIAILKAAgACACQTAgAkEAEBQiAhANBEAgAUIANwMAQX8PCyAAIAEgAhCwAQsNACAAIAEgAkEAEKoDC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLFQAgACgCACAAKAIEEBogAEEANgIECwoAIABBMGtBCkkLIwECfyAAKAIAIgEgACgC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EBAPCyAAIAJBOWtB/wFxEBAPCyAAIAJBNWtB/wFxEBAPCyAAIAJBMWtB/wFxEBAPCyAAIAJBLWtB/wFxEBAPCyAAIAJBKWtB/wFxEBAPCyAAIAJBJWtB/wFxEBAPCyAAIAJBIWtB/wFxEBAPCyAAIAJBHWtB/wFxEBAPCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcABEBAMBQsgAEHBARAQDAQLIABBwgEQEAwDCyABQSJGDQELIAAgAUH/AXEQECAAIAJB//8DcRAxDwsgACACQRRrQf8BcRAQDwsgACACQf8BcRAQCxsBAX8gACABEDsEf0EABSAAQak2QQAQFkF/CwsZAQF/IAEgAhBAIgNFBEAgACACEJwDCyADCyYBAX8jAEEQayICJAAgAkEANgIMIABBASABQQAQqwMgAkEQaiQACxkAIAAoAhAgARCcAiIBRQRAIAAQyQELIAELbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJBgAJJIgEbEEsaIAFFBEADQCAAIAVBgAIQZyACQYACayICQf8BSw0ACwsgACAFIAIQZwsgBUGAAmokAAsPACAAKAJAQYACaiABEBALbwIBfgF/IAAhBAJAAkAgARASDQAgACABQTsgAUEAEBQiAxANBEAgAw8LIAMQIg0BIAAgAxAMIAAgARCPAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABAPIQMLIAAgAyACEFMhASAAIAMQDCABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFwsgA0GHgAEQzQILEAAgACAANgIEIAAgADYCAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLYgACQAJAIAFBAEgNACAAKAKsAiABTA0AIAAoAqQCIAFBFGxqIgAg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GnZxIAAgBnFyEJ8DGyEHDAILIAAgBkHG0QAQeSEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD7AUUNAQsgA0EANgIMIABBBCACQQAQqwNBfyEECyADQRBqJAAgBAvMAQECfwJAIAFCgICAgHBaBEAgAachAwNAAkAgAy0ABUEEcUUNACAAKAIQKAJEIAMvAQZBGGxqKAIUIgRFDQAgBCgCEEUNACAAIAOtQoCAgIBwhBAPIgEgAiAEKAIQERMAIQIgACABEAwgAg8LIAOtQoCAgIBwhBAPIQEgAEEAIAMgAhBPIQQgACABEAwgBA0CAkAgAy8BBkEVa0H//wNxQQhLDQAgACACEKUDIgRFDQAgBEEfdQ8LIAMoAhAoAiwiAw0ACwtBACEECyAECxoAIAAgASACQQBOBH4gAq0FIAK4EBcLEKEBCwsAIABB/////wdxC8cJAgR+BH8jAEHwAGsiCiQAIARC////////////AIMhBQJAAkAgAVAiCSACQv///////////wCDIgZCgICAgICAwP//AH1CgICAgICAwICAf1QgBlAbRQRAIANCAFIgBUKAgICAgIDA//8AfSIIQoCAgICAgMCAgH9WIAhCgICAgICAwICAf1EbDQELIAkgBkKAgICAgIDA//8AVCAGQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgBkKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACACIAEgA4UgAiAEhUKAgICAgICAgIB/hYRQIgkbIQRCACABIAkbIQMMAgsgAyAFQoCAgICAgMD//wCFhFANASABIAaEUARAIAMgBYRCAFINAiABIAODIQMgAiAEgyEEDAILIAMgBYRQRQ0AIAEhAyACIQQMAQsgAyABIAEgA1QgBSAGViAFIAZRGyIMGyEFIAQgAiAMGyIIQv///////z+DIQYgAiAEIAwbIgdCMIinQf//AXEhCyAIQjCIp0H//wFxIglFBEAgCkHgAGogBSAGIAUgBiAGUCIJG3kgCUEGdK18pyIJQQ9rEHMgCikDaCEGIAopA2AhBUEQIAlrIQkLIAEgAyAMGyEDIAdC////////P4MhBCALRQRAIApB0ABqIAMgBCADIAQgBFAiCxt5IAtBBnStfKciC0EPaxBzQRAgC2shCyAKKQNYIQQgCikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCECIAZCA4YgBUI9iIQhBCADQgOGIQEgByAIhSEDAkAgCSALRg0AIAkgC2siC0H/AEsEQEIAIQJCASEBDAELIApBQGsgASACQYABIAtrEHMgCkEwaiABIAIgCxChAiAKKQMwIAopA0AgCikDSIRCAFKthCEBIAopAzghAgsgBEKAgICAgICABIQhByAFQgOGIQYCQCADQgBTBEBCACEDQgAhBCABIAaFIAIgB4WEUA0CIAYgAX0hBSAHIAJ9IAEgBlatfSIEQv////////8DVg0BIApBIGogBSAEIAUgBCAEUCILG3kgC0EGdK18p0EMayILEHMgCSALayEJIAopAyghBCAKKQMgIQUMAQsgASAGfCIFIAFUrSACIAd8fCIEQoCAgICAgIAIg1ANACAFQgGDIARCP4YgBUIBiISEIQUgCUEBaiEJIARCAYghBAsgCEKAgICAgICAgIB/gyEBIAlB//8BTgRAIAFCgICAgICAwP//AIQhBEIAIQMMAQtBACELAkAgCUEASgRAIAkhCwwBCyAKQRBqIAUgBCAJQf8AahBzIAogBSAEQQEgCWsQoQIgCikDACAKKQMQIAopAxiEQgBSrYQhBSAKKQMIIQQLIARCPYYgBUIDiIQiAiAFp0EHcSIJQQRLrXwiAyACVK0gBEIDiEL///////8/gyALrUIwhoQgAYR8IQQCQCAJQQRGBEAgBCADQgGDIgEgA3wiAyABVK18IQQMAQsgCUUNAQsLIAAgAzcDACAAIAQ3AwggCkHwAGokAAvJBQEFfyMAQeAAayIDJAAgAyABNgJcAkACQAJAAkACQAJAAkACQAJAAkACQANAIAJBFGwiBCADakEUayEFA0ACQCADIAMoAlwiAUEEajYCXAJAAkACQAJAAkAgASgCACIGDggAAQIDAwMECAULIAJBBE4NECADIAFBCGo2AlwgASgCBCEBIAMgBGoiBCAAKAIMIAAoAhAQiAEgAkEBaiECIAQgARC2BEUNBgwJCyACQQRODQ4gAyABQQhqNgJcIAEoAgQhASADIARqIgQg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A0EIaiACEI4ERQRAQQAhBCABIAMpAwgiAkKAgICAgICAEFoEfiAAQb8OEGtBfyEEQgAFIAILNwMACyADQRBqJAAgBAsNACAAIAEgAhAPEM4FC8wBAgF/AXwCfwNAAkACQAJ/AkACQCACEFYOCAAAAAAEBAQBBAsgAqcMAQsgAhBJIgS9IgJCNIinQf8PcSIDQZ0ISw0BIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyEAQQAMAwtBACEAQQAgA0HSCEsNAhpBACACQv////////8Hg0KAgICAgICACIQgA0GTCGuthkIgiKciAGsgACACQgBTGyEAQQAMAgsgACACEKABIgIQDUUNAAtBACEAQX8LIQMgASAANgIAIAMLCwAgACABIAIQkwILLwEBfyMAQdAAayIDJAAgAyAAIANBEGogARCJATYCACAAIAIgAxAWIANB0ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEFAgAUEAOgCIAQsLDQAgACABIAEQQxCtAwsWACAAIAEgAiADIAQgBSAAKQMwEIsCCxsAIAAgAUH/AXEQECAAIAIgACgCBGtBBGsQHguOAQECfyMAQRBrIgIkAAJ/IAEEQCAAQSBqIAAgAEHBAGtBGkkbIABB/wBNDQEaIAJBBGogAEECELcDGiACKAIEDAELIABBIGsgACAAQeEAa0EaSRsgAEH/AE0NABogAkEEaiAAQQAQtwMhASACKAIEIgMgACADQf8ASxsgACABQQFGGwshACACQRBqJAAgAAtmAQF/An9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLVQECfwJAIAFCgICAgHBUDQAgAaciAy8BBiIEQQpLQQEgBHRB8AlxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABEA1FBEAgAEGszABBABAWCwsnACAAIAApA8ABIAIgARAPIgFBAxDsARogACABIAMQ7gUgACABEAwLIAEBfiAAIAAgAiABIANBBEEAEMsBIgUgASAEENABIAULjgIBAn8jAEEwayIFJAACfyACIAEoAgBPBEAgBSACNgIkIAUg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ARAOIAAgBi0AOBBuIABBDhAOIAAoAhBBPUcNACAAQREQDiAAQQYQDiAAQasBEA4gAEHpAEF/EB0hBCAAEBENBiAAQQ4QDiAAEGINBiAGKAIwIghBtgFHIAhBPEdxRQRAIAAgBigCNBCtAQsgACAEECALIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQ1AELIAAoAhBB3QBGDQAgB0Glf0YEQEHOzAAhCAwECyAAQSwQMEUNAQwFCwsgAEGDARAOIAAoAkAQqgEgABARDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB6wBBfxAdIQEgABARDQQgACAKECAgAwRAIABBDhAOCyAAEGINBCAAQesAIAsQHRogACABECBBASEHDAQLIANFBEAgAEGAOUEAEBUMAwsgACgCQCgCgAIgDWpBsQEgDiANaxBLGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBUMAQsgACgCACAGKAI0EBMLQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDiAAQdkAEA4gACAAKAJALwGkARAYCwsSACAAQYN/RiAAQdUAakEuSXILEwAgACABIAIgAyAEQQBBABCKAgusAQIBfwF+IAApAgQiBKdB/////wdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB/wFLDQAgAiADIAIgA0obIQMgAEEQaiEAIAFB/wFxIQEDQCACIANGDQEgACACai0AACABRg0CIAJBAWohAgwACwALQX8hAgsgAguNAQEBfyMAQRBrIgMkACADIAI3AwgCQCAAIAFBhgEgAUEAEBQiAhANDQAgACACEDsEQCAAIAIgAUEBIANBCGoQNiICEA0NASACECINASACECgNASAAIAIQDCAAQco8QQAQFkKAgICA4AAhAgwBCyAAIAIQDCAAIAFBASADQQhqEJAFIQILIANBEGokACACC6MBAgN/AX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf////8HcU5yDQEgAiADQQF0ai8B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BiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAwgBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABAPNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA83AwAgByAHQQhrKQMAEA83AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDzcDACAHIAdBEGspAwAQDzcDCCAHIAdBCGspAwAQDzcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABAPNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDzcDACAHQQhqIQgMwwELIAcgB0EIayIGKQMAIgE3AwAgB0EQayIIKQMAIScgCCAHQRhrIggpAwA3AwAgBiAnNwMAIAggARAPNwMAIAdBCGohCAzCAQsgByAHQQhrIgYpAwAiATcDACAHQRBrIggpAwAhJyAIIAdBGGsiCCkDADcDACAGICc3AwAgCCAHQSBrIgYpAwA3AwAgBiABEA83AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBCGsiCCkDACEnIAggATcDACAGICc3AwAMvgELIAdBIGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBEGsiCCkDACEnIAggB0EIayIIKQMANwMAIAYgJzcDACAIIAE3AwAMvQELIAdBKGsiBikDACEBIAYgB0EgayIGKQMANwMAIAdBGGsiCCkDACEnIAggB0EQayIIKQMANwMAIAYgJzcDACAIIAdBCGsiBikDADcDACAGIAE3AwAMvAELIAdBCGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBGGsiCCkDACEnIAggATcDACAGICc3AwAMuwELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggATcDACAGICc3AwAMugELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggB0EoayIIKQMANwMAIAYgJzcDACAIIAE3AwAMuQELIAdBCGsiBikDACEBIAYgB0EQayIG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gIB4RiABQv////8PVnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyARIAEQDzcDGCAJICFBjgEQkgINLCAJIAggESkDGBAfDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIgokACAJIApBDGogB0EIayINKQMAEMYBIQwgDUKAgICAMCAKNQIMQv////8PhSAMGzcDACAKQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKICenIAGndK03AwAMJwsgCSAHQaABEMgCRQ0mDCoLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKAn4gJ6cgAad2IgZBAE4EQCAGrQwBCyAGuBAXCzcDAAwmCyMAQRBrIgokACAHQQhrIg0pAwAhAQJ/AkAgCSAKQQxqIAdBEGsiDCkDABDpAwRAIAkgARAMDAELIAkgCkEIaiABEOkDDQAgDAJ+IAooAgwgCigCCHYiDEEATgRAIAytDAELIAy4EBcLNwMAQQAMAQsgDEKAgICAMDcDACANQoCAgIAwNwMAQX8LIQwgCkEQaiQAIAxFDSUMKQsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAad1rTcDAAwlCyAJIAdBoQEQyAJFDSQMKAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQyAJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMgCRQ0iDCYLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDIAkUNIQwlCyAHQQhrIggpAwAiASAHQRBrIgopAwAiJ4RC/////w9YBEAgCiAnpyABp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlgNFDSAMJAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAadMrUKAgICAEIQ3AwAMIAsgCSAHQaQBEJYDRQ0fDCMLIAdBCGsiCCkDACIB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ACACAn9BACACKAIQIgFBO0YNABpBACABQf0ARg0AGkEAIAIoAjANABogAhCZAQ0dQQELEPYCIAIQvQENHAweCyACEBENGyACKAIwBEAgAkGIEEEAEBUMHAsgAhCZAQ0bIAJBLxAOIAIQvQFFDRwMGwsgAhARDRogAhCFARogAhDWASACEIgCDRogAkHpAEF/EB0hACACIAIoAkAtAG5Bf3NBAXEiARDxAQ0aAkAgAigCEEGvf0cEQCAAIQMMAQsgAkHrAEF/EB0hAyACEBENGyACIAAQICACIAEQ8QENGwsgAiADECAMFwsgAhA1IQAgAhA1IQEgAigCQCAHQRBqIAsgASAAQQAQqwEgAhARDRkgAhDWASACIAAQICACEIgCDRkgAkHpACABEB0aIAIQuAINGSACQesAIAAQHRogAiABECAgAigCQBCqAQwaCyACEDUhACACEDUhASACEDUhAyACKAJAIAdBEGogCyABIABBABCrASACEBENGCACIAMQICACENYBIAIQuAINGCACIAAQICACQbp/EDANGCACEIgCDRggAigCEEE7RgRAIAIQEQ0ZCyACQeoAIAMQHRogAiABECAgAigCQBCqAQwZCyACEBENFyACENYBQQAhASAHQQA2AgwCQCACKAIQIgBBWEcEQCAAQShHDQEgAiAHQQxqQQAQqQEaDAELIAIoAkAtAGxBAnFFBEAgAkHwIUEAEBUMGQsgAhARDRhBASEBCyACQSgQMA0XIActAAxBAXFFBEAgASEEIwBBQGoiBSQAIAIoAgAhDSACKAJAIg4oArwBIRAgAhA1IQMgAhA1IREgAhA1IRIgAhA1IRMgAhCFARpBASEIIAIoAkAgBUEQaiALIBIgA0EBEKsBIAUgEDYCKCACQesAQX8QHSEUIAIoAkAoAoQCIQkgAiATECAgAigCECEAQVEhAUF/IQoCQAJAAkACQAJAAkACQAJAAkAgAkEEENYDDgIAAQgLIABBSUYhDCAAQVFGIgEhCCABIABBsX9GckUgAEFJR3ENASAAIQELIAIQEQ0EAkAgAigCECIAQfsARiAAQdsARnJFBEAgAEGDf0YEQCACKAIoRQ0CCyACQZLfAEEAEBUMBgtBASEIIAIgAUEAQQFBf0EAENUBQQBIDQcgBUEANgI8DAMLIAUgDSACKAIgEBkiBjYCPCACEBEE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/wFxakEBayEGIAoLIQcgDiAPaiIOIBBNDQALCyAJQRBqJAAgBSAAIAgoAkAQogQiBkHt7wAgBhs2AhAgBUHIAGpBlyggBUEQahCEAiAAIAYQNyAEQX9HBEAgBSAENgIAIAVByABqQYHjACAFEIQCCyAFQcgAakEpEBAMAQtBACEDIAVByABqQcP3AEEAEIQCCyAFQcgAakEKEBAgA0UNAAsLIAVByABqQQAQEEKAgICAICERIAUoAlRFBEAgACAFKAJIEHYhEQsgBUHIAGoQlwEgACABQTUgEUEDEBsaIAVB4ABqJAAL7AECAn8BfiMAQRBrIgMkACABQQhrIgQpAwAhBQJ/AkAgACADQQxqIAFBEGsiASkDABDGAQRAIAAgBRAMDAELIAAgA0EIaiAFEMYBDQAgAQJ/AkACQAJAAkACQAJAIAJBrQFrDgMBAwIACwJAIAJBoAFrDgIFAAQLIAMoAgwgAygCCHUMBQsgAygCCCADKAIMcQwECyADKAIIIAMoAgxyDAMLIAMoAgggAygCDHMMAgsQAQALIAMoAgwgAygCCHQLrTcDAEEADAELIAFCgICAgDA3AwAgBEKAgICAMDcDAEF/CyEAIANBEGokACAAC+oEAgd/An4CQCABQoCAgIBwg0KAgICAkH9SBEBCgICAgOAAIQogACABED0iARANDQELAkAgAkKAgICAcINCgICAgJB/UQ0AQoCAgIDgACEKIAAgAhA9IgIQDUUNACABIQIMAQsCQCACpyIFKQIEIgpC/////weDUA0AAkAgAaciAygCAEEBRw0AIAMpAgQgCoVCgICAgAiDQgBSDQAgACgCECADEKMEIAUoAgQiBkH/////B3EiCCADKAIEIgRB/////wdxIgdqIAZBH3Z0IARBH3YiCWtBEWpJDQAgA0EQaiEEIAkEQCAEIAdBAXRqIAVBEGogBkEBdBAlGiADIAMpAgQiCiAFKQIEfEL/////B4MgCkKAgICAeIOENwIEDAILIAQgB2ogBUEQaiAIECUaIAMgAykCBCIKIAUpAgR8Qv////8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAUpAgQiCqdB/////wdxIAMpAgQiC6dB/////wdxaiIGQYCAgIAETwRAIABBmsMAQQAQUAwBCyAAIAYgCiALhKciCEEfdhD9ASIHDQELQoCAgIDgAAwBCyAHQRBqIQQCQCAIQQBOBEAgBCADQRBqIAMoAgRB/////wdxECUiBCADKAIEQf////8HcWogBUEQaiAFKAIEQf////8HcRAlGiAEIAZqQQA6AAAMAQsgBCADIAMoAgRB/////wdxEJQFIAQgAygCBEEBdGogBSAFKAIEQf////8HcRCUBQsgB61CgICAgJB/hAshCiAAIAEQDAwBCyABIQoLIAAgAhAMIAoLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDiAQsLACAAQZ8JQQAQFguBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEoUgEn0hEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCBBgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAEQYAIEIcDIgYgAiABIARBgBAQhwNHDQAgAkGAAWogAiAGEHcNAEGACEGAECACLQCAAUEtRhshCQsgBSABIAMgCRCHAxogAkGAAmokAAwBCyADIQIgCEEIaiENIAhBDGohDiAIQRBqIQwjAEGQA2siByQAAkAgBEEDcUEBRiIPRQRAQREhAkEBIQoDQCACIApNBEBBACEJDAMLIAEgAiAKakEBdiIJIA0gDiAMQQAgB0GQAmoiBhC+AiAGEPoFIAFhBEAg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AgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQdX1AEG+4wBB+BRBrQ4QAAALIAAL8wYCBn8BfgJAAkACQAJ/IAJBAkwEQCACIAEpAgQiCUI+iKdGBEAgACABENYCIgMQ8gFFDQUgASABKAIAQQFrNgIAIAMPCyAAKAI0IAAoAiRBAWsgASACEOUFQf////8DcSIHcSIIQQJ0aiEDIAmnQf////8HcSEFA0AgAiADKAIAIgNFDQIaAkAgACgCOCADQQJ0aigCACIEKQIEIglCIIinQf////8DcSAHRyAJQj6IpyACR3IgCadB/////wdxIAVHcg0AIAQgASAFEOQFDQAgAxDyAQ0EIAQgBCgCAEEBajYCAAwECyAEQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQNB0wEgACgCLEEDbEECbRBKIgRB/////wNLDQEgACAAKAI4IARBAnQQ5wEiBkUNASAAKAIsIgJFBEAgAEEQEJwCIgJFBEAgACAGECEMAwsgAkEBNgIAIAIgAikCBEKAgICAgICAgECENwIEIAYgAjYCACAAIAAoAihBAWo2AihBASECCyAAIAI2AjwgACAGNgI4IAAgBDYCLCAEQQFrIQYDQCACIARPDQEgACgCOCACQQJ0akEAIAJBAWoiAyACIAZGGxDjBTYCACADIQIMAAsACwJAIAEEQCABKQIEIglC//////////8/WARAIAEgCSAFrUI+hoQ3AgQMAgsgACAJpyICQR91IAJB/////wdxIAJBH3Z0akERahDoASICRQRAQQAhAwwECyACQQE2AgAgAiACKQIEQv////93gyABKQIEQoCAgIAIg4QiCTcCBCACIAlCgICAgHiDIAEpAgRC/////weDhDcCBCACQRBqIAFBEGogASgCBCIDQR91IANB/////wdxIANBH3Z0akEBahAlGiAAIAEQpAQgAiEBDAELIABBEBDoASIBRQRAQQAPCyABQoGAgICAgICAgH83AgALIAAgACgCOCAAKAI8IgNBAnRqIgIoAgBBAXY2AjwgAiABNgIAIAEgAzYCDCABIAE1AgQgB61CIIaEIAWtQj6GhDcCBCAAIAAoAihBAWo2AiggBUEDRg0CIAEgACgCNCAIQQJ0aiIBKAIANgIMIAEgAzYCACAAKAIoIAAoAjBIDQIgACAAKAIkQQF0EMAFGgwCCyABRQ0BCyAAIAEQpAQgAw8LIAMLRgAgAkEATARAIABBLxAyDwsgACACQQAQ/QEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAhAlIAJqQQA6AAAgAK1CgICAgJB/hAuiAQECfyMAQaABayIEJABBfyEFIAQgAUEBa0EAIAEbNgKUASAEIAAgBEGeAWogARsiADYCkAEgBEEAQZABEEsiBEF/NgJMIARB9wI2AiQgBEF/NgJQIAQgBEGfAWo2AiwgBCAEQZABajYCVAJAIAFBAEgEQEHEswRBPTYCAAwBCyAAQQA6AAAgBCACIANB9QJB9gIQqQQhBQsgBEGgAWokACAFC50DAwF+A38DfAJAAkACQAJAIAC9IgFCAFkEQCABQiCIpyICQf//P0sNAQsgAUL///////////8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAFCAFkNASAAIAChRAAAAAAAAAAAow8LIAJB//+//wdLDQJBgIDA/wMhA0GBeCEEIAJBgIDA/wNHBEAgAiEDDAILIAGnDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iAUIgiKchA0HLdyEECyAEIANB4r4laiICQRR2arciBkQAAOD+Qi7mP6IgAUL/////D4MgAkH//z9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKIgBkR2PHk17znqPaKgIAehoKAhAAsgAAuZAQEDfCAAIACiIgMgAyADoqIgA0R81c9aOtnlPaJE65wriublWr6goiADIANEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goCEFIAMgAKIhBCACRQRAIAQgAyAFokRJVVVVVVXFv6CiIACgDwsgACADIAFEAAAAAAAA4D+iIAUgBKKhoiABoSAERElVVVVVVcU/oqChC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAsrACAAQYABTwR/IABBzwFNBEAgAEGABWoPCyAAQQF0QdypA2ovAQAFIAALCxAAIAAvAAAgAC0AAkEQdHILvQIBB38CQCABRQ0AA0AgAkEDRgRAIAFBAXEiBUUgAUEGcUVyIQcDQCAEQfICRg0DAkACQCADIARBAnRBwOEBaigCACICQQR2QQ9xIgZ2QQFxRQ0AIAJBD3YhASACQQh2Qf8AcSEIAkACQAJAIAZBBGsOAgABAgsgB0UNASABIAVqIQZBACECA0AgAiAITw0DIAIgBmohASACQQJqIQIgACABIAFBAWoQf0UNAAsMAwsgB0UNACABQQFqIQIgBUUEQCAAIAEgAhB/DQMLIAAgAiABQQJqIgIQf0UEQCAFRQ0CIAAgAiABQQNqEH9FDQILQX8PCyAAIAEgASAIahB/DQELIARBAWohBAwBCwtBfw8FIAEgAnZBAXEEQCACQQJ0QYziA2ooAgAgA3IhAwsgAkEBaiECDAELAAsAC0EAC00BAX8gASAAKAIEIgJKBEAgACgCDCAAKAIIIAEgAkEDbEECbRBKIgFBAnQgACgCEBEBACICRQRAQX8PCyAAIAE2AgQgACACNgIIC0EAC5QCAQJ/IwBBEGsiBCQAAkAgBEEMaiAAIAIgAxC8BCICQQBIDQAgASACaiECA0AgAkEBaiEBAkAgAi0AACIDQT9NBEAgBCgCDCADQQN2akEBaiICIABLDQMgBCADQQdxIAJqQQFqIgM2AgwgBUEBcyEFDAELIANBGHRBGHVBAEgEQCAEIAMgBCgCDGpB/wBrIgM2AgwMAQsgA0HfAE0EQCAEIAQoAgwgAi0AASADQQh0cmpB//8AayIDNgIMIAJBAmohAQwBCyAEIAQoAgwgAi0AAiADQRB0IAItAAFBCHRycmpB////AmsiAzYCDCACQQNqIQELIAAgA0kNASAFQQFzIQUgASECDAALAAsgBEEQaiQAIAULTAECfyMAQRBrIgMkAAJ/IAIgASgCACIELQAARwRAIAMgAjYCACAAQbz9ACADED9BfwwBCyABIARBAWo2AgBBAAshAiADQRBqJAAgAgseACAAQTBrQQpJIABBX3FBwQBrQRpJciAAQd8ARnILrQEBA38gACgCQBoCQCAAKAIEIQMgACABEMYEDQBBBSADayEEA0AgACgCGCICLQAAQfwARwRAQQAPCyAAIAJBAWo2AhggACgCBCECIAAgA0EFEOsBBEAgABCsAkF/DwsgACgCACADakEJOgAAIAAoAgAgA2pBAWogAiAEahBdIABBB0EAELoBIQIgACABEMYEDQEgACgCACACaiAAKAIEIAJrQQRrEF0MAAsAC0F/C0gBAn8CQANAIAFBCkYNASABQQJ0QZLgAWovAQAgAEoNASABQQF0IQIgAUEBaiEBIAJBAXRBlOABai8BACAATA0AC0EBDwtBAAukAgEBfwJ/An8gAUH/AE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB/w9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf//A00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf///wBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf///x9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB/AFyOgAAIAAgAUEYdkE/cUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJB4QIgAhs2AhALJwECfwJAIAAgAUEAEJsBIgMEQCADEJoBRQ0BIAAQdQtBfyECCyACC8kBAgN/AX4jAEEQayIFJAACQCAAIAFBAhBvIgEQDQ0AAkACQCACQQFHDQAgAykDACIHEJABRQ0AIAAgBUEMaiAHEA9BARDOAg0BIAAgAUEwAn4gBSgCDCICQQBOBEAgAq0MAQsgArgQFwsQSEEASA0BDAILIAJBACACQQBKGyECA0AgAiAERg0CIAAgASAEIAMgBEEDdGopAwAQDxCWAiEGIARBAWohBCAGQQBODQALCyAAIAEQDEKAgICA4AAhAQsgBUEQaiQAIAELEQAgACABIAIgAyAEIAUQywELDQAgAEEGQX9BBRDrBQt8AgJ+AX8gACACKQMA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CgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQ5QUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEkiAyADvUL///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsHACAAQQFxCy4BAX8gACAAIAEgACACEMoBIgIgAUEAEBQiARCmASEDIAAgARAMIAAgAhATIAMLEgAgAEEIdCAAQQh2ckH//wNxC1ABAX8gAEEgEC8iAgRAIAJBATYCACACQoCAgIDAAEKAgICAMCABGzcDGCACIAJBGGo2AhAgAiACLQAFQQFyOgAFIAAoAhAgAkEDEL4BCyACCwoAIAAoAgQgAEYLMgACQCAAIAIgAUEAQQAQJCICEA0NACACECINACAAIAIQDCAAEClCgICAgOAAIQILIAILCwAgACABIAIQxgELCwAgAEG2PEEAEBYLdQECfyMAQZABayIEJABB3PsAIQUCQAJAAkACQCABQQFqDgUDAgIAAQILQZ37ACEFDAELQdseIQULIAAgBEHQAGogAxCJASEBIAQgACAEQRBqIAIoAgQQiQE2AgQgBCABNgIAIAAgBSAEENMCCyAEQZABaiQAC2kBAn8jAEEQayIFJAAgBUEANgIIIAVCADcDACAAIAEgAiADIAQgBRChBSECA0AgBSgCACEBIAYgBSgCCE5FBEAgACABIAZBA3RqKAIEEBMgBkEBaiEGDAELCyAAIAEQGiAFQRBqJAAgAgseACABKAIAQQRHBEAgACABQQhqEIsDIAFBBDYCAAsLpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQtwEiBEUEQCAAEIoDDAELIARBEGohBSAAKAIIIQIgAygCDCEGA0AgAkEATEUEQCAFIAJBAWsiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAZBAXYgAWo2AgxBACECCyADQRBqJAAgAgtUAQJ/IAAgASkDGCACECMgACABKQMAIAIQIwJAIAEoAjwiBEUNACABKAIgIQMDQCADIARPDQEgACADKQMAIAIQIyADQQhqIQMgASgCPCEEDAALAAsLGgEBfyABpygCICIDBEAgACADKQMA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BCQAAkACQCAAIARBCGogAUHiABCHASICRQ0AIAQpAwgiARASBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDYiARANDQAgACABEC0iA0UEQEEAIQMMAgsgACACKQMAEKIBIgJBAEgNACACRQ0BIABB6iJBABAWC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD9ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECUaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQViIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAqIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECMLIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAjDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAjIAAgASkDGCACECMPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAjIAAgAykDSCACECMgACADKQNgIAIQIyAAIAMpA2ggAhAjIAVBBGohAwwBCwsgACABKQPAASACECMgACABKQPIASACECMgACABKQOwASACECMgACABKQO4ASACECMgACABKQOoASACECNBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAjIANBAWohAwwBCwsgACABKQOYASACECMgACABKQOgASACECMgACABKQNQIAIQIyAAIAEpA0AgAhAjIAAgASkDSCACECMgACABKQM4IAIQIyAAIAEpAzAgAhAjIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQIyADQQFqIQMMAQsLCw8LQZniAEG+4wBBjixB0joQAAALiAICAX4CfyMAQTBrIgQkAEHK5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFZBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBnOMAIAQQVxoMCQsgAEEDQQIgAacbEDIhAwwJCyAAQQEQMiEDDAgLIABBxQAQMiEDDAcLIAAgAUEAEJsDIgEQDQRAIAEhAwwHCyAAIAEgAhCgBCEDIAAgARAMDAYLIAJFDQELIAEQDyEDDAQLIABBw8MAQQAQFgwDCyAAIAEQSUEKQQBBABDMAiEDDAILQbfmACEFCyAAIAUQdiEDCyAEQTBqJAAgAwutBAIIfwF+AkACQAJAAkACQCACQoCAgIBwg0KAgICAkH9SBEAgACACEC4iAhANRQ0BDAILIAIQDyECCyACpyIEQRBqIQcgBCkCBCIMp0H/////B3EhBgJAIAxCgICAgAiDUARAQQAhBANAIAQgBkZFBEAgBSAEIAdqLQAAQQd2aiEFIARBAWohBAwBCwsgBUUEQCAHIQQgAQ0EDAYLIAAgBSAGakEAEP0BIghFDQIgCEEQaiEEQQAhBQNAIAUgBkYNAgJ/IAUgB2osAAAiA0EATgRAIAQgAzoAACAEQQFqDAELIAQgA0E/cUGAAXI6AAEgBCADQcABcUEGdkHAAXI6AAAgBEECagshBCAFQQFqIQUMAAsACyAAIAZBA2xBABD9ASIIRQ0BIAhBEGohBANAIAkiBSAGTg0BIAVBAWohCSAHIAVBAXRqLwEAIgpB/wBNBEAgBCAKOgAAIARBAWohBAUCQCAKQYD4A3FBgLADRyADciAGIAlMcg0AIAcgCUEBdGovAQAiC0GA+ANxQYC4A0cNACAKQQp0QYD4P3EgC0H/B3FyQYCABGohCiAFQQJqIQkLIAQgChDmAiAEaiEECwwACwALIARBADoAACAIIAQgCEEQaiIHa0H/////B3GtIAgpAgRCgICAgHiDhDcCBCAAIAIQDCABRQ0CIAgoAgRB/////wdxIQYMAQtBACEGQQAhB0EAIQQgAUUNAgsgASAGNgIACyAHIQQLIAQLJQIBfwF+IAAgARAyIgMQDUUEQCAAIAMQpgEhAiAAIAMQDAsgAgsMACABIAAoAgwRBAALPQEBfyABIAEoAgAiAkEBazYCACACQQFMBEAgASkCBEKAgICAgICAgMAAWgRAIAAgARCsAw8LIAAgARAhCwtVAQJ/IwBBEGsiAiQAIAAoAhAhAAJ/AkAgAkEMaiABEOcFRQ0AIAIoAgwiA0EASA0AIAAgARCkBCADEJUBDAELIAAgAUEBENcCCyEBIAJBEGokACABC14BA38gAEHgAWohBCAAKALkASECA0AgAiAERwRAIAJBCGshAyACKAIEIQICQAJAAkAgAQ4DAgABBAsgAywAVA0DDAELIAMpAlRCIIZCOIenDQILIAAgAxDpBQwBCwsLRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQfSAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALEAAgACABIAJBAEEAEKkEGgvUAgEEfyMAQdABayIFJAAgBSACNgLMASAFQaABaiICQQBBKBBLGiAFIAUoAswBNgLIAQJAQQAgASAFQcgBaiAFQdAAaiACIAMgBBD3BUEASARAQX8hAQwBCyAAKAJMQQBOIQYgACgCACEHIAAoAkhBAEwEQCAAIAdBX3E2AgALAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhCCAAIAU2AiwMAQsgACgCEA0BC0F/IAAQrgQNARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ9wULIQIgCARAIABBAEEAIAAoAiQRAQAaIABBADYCMCAAIAg2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF/IAEbIQILIAAgACgCACIAIAdBIHFyNgIAQX8gAiAAQSBxGyEBIAZFDQALIAVB0AFqJAAgAQsgAQF+IAAgACACIAFBAUECQQAQywEiBCABIAMQ0AEgBAs8AQF/IABCADcDcCAAIAAoAiwgACgCBCIBa6w3A3ggACAAKAIIIgAgAWusQgBXQQFyBH8gAAUgAQs2AmgLSgECfwJAIAAtAAAiAkUgAiABLQAAIgNHcg0AA0AgAS0AASEDIAAtAAEiAkUNASABQQFqIQEgAEEBaiEAIAIgA0YNAAsLIAIgA2sLwQEBA38CQCABIAIoAhAiAwR/IAMFIAIQrgQNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJAIAIoAlBBAEgEQEEAIQMMAQsgASEEA0AgBCIDRQRAQQAhAwwCCyAAIANBAWsiBGotAABBCkcNAAsgAiAAIAMgAigCJBEBACIEIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABECUaIAIgAigCFCABajYCFCABIANqIQQLIAQLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALmAQDA3wCfgJ/AnwCQCAAvSIEQjSIp0H/D3EiBkHJB2tBP0kEQCAGIQcMAQsgBkHIB00EQCAARAAAAAAAAPA/oA8LIAZBiQhJDQBEAAAAAAAAAAAgBEKAgICAgICAeFENARogBkH/D0YEQCAARAAAAAAAAPA/oA8LIARCAFMEQEQAAAAAAAAAEBCKBg8LRAAAAAAAAABwEIoGDwtBsJsEKwMAIACiQbibBCsDACIBoCICIAGhIgFByJsEKwMAoiABQcCbBCsDAKIgAKCgIgEgAaIiACAAoiABQeibBCsDAKJB4JsEKwMAoKIgACABQdibBCsDAKJB0JsEKwMAoKIgAr0iBadBBHRB8A9xIgZBoJwEaisDACABoKCgIQAgBkGonARqKQMAIAVCLYZ8IQQgB0UEQAJ8IAVCgICAgAiDUARAIARCgICAgICAgIg/fb8iASAAoiABoEQAAAAAAAAAf6IMAQsjAEEQayEHIARCgICAgICAgPA/fL8iAiAAoiIBIAKgIgNEAAAAAAAA8D9jBHwgB0KAgICAgICACDcDCCAHIAcrAwhEAAAAAAAAEACiOQMIRAAAAAAAAAAAIANEAAAAAAAA8D+gIgAgASACIAOhoCADRAAAAAAAAPA/IAChoKCgRAAAAAAAAPC/oCIAIABEAAAAAAAAAABhGwUgAwtEAAAAAAAAEACiCw8LIAS/IgEgAKIgAaALC3UCAnwBfiAAAn4QAyIBRAAAAAAAQI9AoyICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB/CyIDPgIAIAACfyABIANC6Ad+uaFEAAAAAABAj0CiIgGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CzYCBAvAGAMUfwR8AX4jAEEwayIJJAACQAJAAkAgAL0iGkIgiKciA0H/////B3EiBEH61L2ABE0EQCADQf//P3FB+8MkRg0BIARB/LKLgARNBEAgGkIAWQRAIAEgAEQAAEBU+yH5v6AiAEQxY2IaYbTQvaAiFjkDACABIAAgFqFEMWNiGmG00L2gOQMIQQEhAgwFCyABIABEAABAVPsh+T+gIgBEMWNiGmG00D2gIhY5AwAgASAAIBahRDFjYhphtNA9oDkDCEF/IQIMBAsgGkIAWQRAIAEgAEQAAEBU+yEJwKAiAEQxY2IaYbTgvaAiFjkDACABIAAgFqFEMWNiGmG04L2gOQMIQQIhAgwECyABIABEAABAVPshCUCgIgBEMWNiGmG04D2gIhY5AwAgASAAIBahRDFjYhphtOA9oDkDCEF+IQIMAwsgBEG7jPGABE0EQCAEQbz714AETQRAIARB/LLLgARGDQIgGkIAWQRAIAEgAEQAADB/fNkSwKAiAETKlJOnkQ7pvaAiFjkDACABIAAgFqFEypSTp5EO6b2gOQMIQQMhAgwFCyABIABEAAAwf3zZEkCgIgBEypSTp5EO6T2gIhY5AwAgASAAIBahRMqUk6eRDuk9oDkDCEF9IQIMBAsgBEH7w+SABEYNASAaQgBZBEAgASAARAAAQFT7IRnAoCIARDFjYhphtPC9oCIWOQMAIAEgACAWoUQxY2IaYbTwvaA5AwhBBCECDAQLIAEgAEQAAEBU+yEZQKAiAEQxY2IaYbTwPaAiFjkDACABIAAgFqFEMWNiGmG08D2gOQMIQXwhAgwDCyAEQfrD5IkESw0BCyAAIABEg8jJbTBf5D+iRAAAAAAAADhDoEQAAAAAAAA4w6AiF0QAAEBU+yH5v6KgIhYgF0QxY2IaYbTQPaIiGKEiGUQYLURU+yHpv2MhAwJ/IBeZRAAAAAAAAOBBYwRAIBeqDAELQYCAgIB4CyECAkAgAwRAIAJBAWshAiAXRAAAAAAAAPC/oCIXRDFjYhphtNA9oiEYIAAgF0QAAEBU+yH5v6KgIRYMAQsgGUQYLURU+yHpP2RFDQAgAkEBaiECIBdEAAAAAAAA8D+gIhdEMWNiGmG00D2iIRggACAXRAAAQFT7Ifm/oqAhFgsgASAWIBihIgA5AwACQCAEQRR2IgMgAL1CNIinQf8PcWtBEUgNACABIBYgF0QAAGAaYbTQPaIiAKEiGSAXRHNwAy6KGaM7oiAWIBmhIAChoSIYoSIAOQMAIAMgAL1CNIinQf8PcWtBMkgEQCAZIRYMAQsgASAZIBdEAAAALooZozuiIgChIhYgF0TBSSAlmoN7OaIgGSAWoSAAoaEiGKEiADkDAAsgASAWIAChIBihOQMIDAELIARBgIDA/wdPBEAgASAAIAChIgA5AwAgASAAOQMIDAELIBpC/////////weDQoCAgICAgICwwQCEvyEAQQEhAwNAIAlBEGogAkEDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3IhY5AwAgACAWoUQAAAAAAABwQaIhAEEBIQIgA0EBcSEHQQAhAyAHDQALIAkgADkDIAJAIABEAAAAAAAAAABiBEBBAyEDDAELQQIhAgNAIAlBEGogAiIDQQFrIgJBA3RqKwMARAAAAAAAAAAAYQ0ACwsgCUEQaiEPIwBBsARrIgYkACAEQRR2QZYIayICQQNrQRhtIgRBACAEQQBKGyIQQWhsIAJqIQRBlIUEKAIAIgogAyIMQQFrIghqQQBOBEAgCiAMaiEDIBAgCGshAgNAIAZBwAJqIAVBA3RqIAJBAEgEfEQAAAAAAAAAAAUgAkECdEGghQRqKAIAtws5AwAgAkEBaiECIAVBAWoiBSADRw0ACwsgBEEYayEHQQAhAyAKQQAgCkEAShshBSAMQQBMIQsDQAJAIAsEQEQAAAAAAAAAACEADAELIAMgCGohDkEAIQJEAAAAAAAAAAAhAANAIA8gAkEDdGorAwAgBkHAAmogDiACa0EDdGorAwCiIACgIQAgAkEBaiICIAxHDQALCyAGIANBA3RqIAA5AwAgAyAFRiECIANBAWohAyACRQ0AC0EvIARrIRJBMCAEayEOIARBGWshEyAKIQMCQANAIAYgA0EDdGorAwAhAEEAIQIgAyEFIANBAEwiDUUEQANAIAZB4ANqIAJBAnRqAn8CfyAARAAAAAAAAHA+oiIWmUQAAAAAAADgQWMEQCAWqgwBC0GAgICAeAu3IhZEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACAGIAVBAWsiBUEDdGorAwAgFqAhACACQQFqIgIgA0cNAAsLAn8gACAHEOoBIgAgAEQAAAAAAADAP6KcRAAAAAAAACDAoqAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLIQggACAIt6EhAAJAAkACQAJ/IAdBAEwiFEUEQCADQQJ0IAZqIgIgAigC3AMiAiACIA51IgIgDnRrIgU2AtwDIAIgCGohCCAFIBJ1DAELIAcNASADQQJ0IAZqKALcA0EXdQsiC0EATA0CDAELQQIhCyAARAAAAAAAAOA/Zg0AQQAhCwwBC0EAIQJBACEFIA1FBEADQCAGQeADaiACQQJ0aiIVKAIAIQ1B////ByERAn8CQCAFDQBBgICACCERIA0NAEEADAELIBUgESANazYCAEEBCyEFIAJBAWoiAiADRw0ACwsCQCAUDQBB////AyECAkACQCATDgIBAAILQf///wEhAgsgA0ECdCAGaiINIA0oAtwDIAJxNgLcAwsgCEEBaiEIIAtBAkcNAEQAAAAAAADwPyAAoSEAQQIhCyAFRQ0AIABEAAAAAAAA8D8gBxDqAaEhAAsgAEQAAAAAAAAAAGEEQEEAIQUCQCAKIAMiAk4NAANAIAZB4ANqIAJBAWsiAkECdGooAgAgBXIhBSACIApKDQALIAVFDQAgByEEA0AgBEEYayEEIAZB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBUEBaiECIAZB4ANqIAogBWtBAnRqKAIARQ0ACyADIAVqIQUDQCAGQcACaiADIAxqIghBA3RqIANBAWoiAyAQakECdEGghQRqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAMQQBKBEADQCAPIAJBA3RqKwMAIAZBwAJqIAggAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBiADQQN0aiAAOQMAIAMgBUgNAAsgBSEDDAELCwJAIABBGCAEaxDqASIARAAAAAAAAHBBZgRAIAZB4ANqIANBAnRqAn8CfyAARAAAAAAAAHA+oiIWmUQAAAAAAADgQWMEQCAWqgwBC0GAgICAeAsiArdEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACADQQFqIQMMAQsCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshAiAHIQQLIAZB4ANqIANBAnRqIAI2AgALRAAAAAAAAPA/IAQQ6gEhAAJAIANBAEgNACADIQIDQCAGIAIiBEEDdGogACAGQeADaiACQQJ0aigCALeiOQMAIAJBAWshAiAARAAAAAAAAHA+oiEAIAQNAAsgA0EASA0AIAMhAgNAIAMgAiIEayEHRAAAAAAAAAAAIQBBACECA0ACQCACQQN0QfCaBGorAwAgBiACIARqQQN0aisDAKIgAKAhACACIApODQAgAiAHSSEFIAJBAWohAiAFDQELCyAGQaABaiAHQQN0aiAAOQMAIARBAWshAiAEQQBKDQALC0QAAAAAAAAAACEAIANBAE4EQCADIQIDQCACIgRBAWshAiAAIAZBoAFqIARBA3RqKwMAoCEAIAQNAAsLIAkgAJogACALGzkDACAGKwOgASAAoSEAQQEhAiADQQBKBEADQCAAIAZBoAFqIAJBA3RqKwMAoCEAIAIgA0chBCACQQFqIQIgBA0ACwsgCSAAmiAAIAsbOQMIIAZBsARqJAAgCEEHcSECIAkrAwAhACAaQgBTBEAgASAAmjkDACABIAkrAwiaOQMIQQAgAmshAgwBCyABIAA5AwAgASAJKwMIOQMICyAJQTBqJAAgAgv+AwMDfAJ/AX4gAL0iBkIgiKdB/////wdxIgRBgIDAoARPBEAgAEQYLURU+yH5PyAApiAAvUL///////////8Ag0KAgICAgICA+P8AVhsPCwJAAn8gBEH//+/+A00EQEF/IARBgICA8gNPDQEaDAILIACZIQAgBEH//8v/A00EQCAEQf//l/8DTQRAIAAgAKBEAAAAAAAA8L+gIABEAAAAAAAAAECgoyEAQQAMAgsgAEQAAAAAAADwv6AgAEQAAAAAAADwP6CjIQBBAQwBCyAEQf//jYAETQRAIABEAAAAAAAA+L+gIABEAAAAAAAA+D+iRAAAAAAAAPA/oKMhAEECDAELRAAAAAAAAPC/IACjIQBBAwshBSAAIACiIgIgAqIiASABIAEgASABRC9saixEtKK/okSa/d5SLd6tv6CiRG2adK/ysLO/oKJEcRYj/sZxvL+gokTE65iZmZnJv6CiIQMgAiABIAEgASABIAFEEdoi4zqtkD+iROsNdiRLe6k/oKJEUT3QoGYNsT+gokRuIEzFzUW3P6CiRP+DAJIkScI/oKJEDVVVVVVV1T+goiEBIARB///v/gNNBEAgACAAIAMgAaCioQ8LIAVBA3QiBEGQhARqKwMAIAAgAyABoKIgBEGwhARqKwMAoSAAoaEiAJogACAGQgBTGyEACyAACxYAQfS0BEH8swQ2AgBBrLQEQSo2AgALmAYBBH9BASEJIAJBAXRBwNkCai8BACECIAVFBEAgACACNgIAQQEPCyACQbDkAmohBkESIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDiIAAAAAAAAAAQECAgICAgQDAwMDAwMFBQUFBQUFBQYHCAkJCwsgBiABIANrIAVsQQF0aiEBQQAhAgNAIAIgBUYEQCAFDwsgACACQQJ0aiABIAJBAXRqLwAAIgM2AgAgAkEBaiECIAMNAAsMCwsgBUEHayIIIAEgA2tsIQIgBCAIbEEBdCEBQQAhBwNAIAcgCEYNCiAGIAJBAnYgAWpqLQAAIAJBAXQiA0EGcXZBEHRBgIAMcSADIAZqLwAAciIDRQ0LIAAgB0ECdGogAzYCACAHQQFqIQcgAkEBaiECDAALAAsgBiAFQQlrIgggASADa2xqIQFBACECA0AgAiAIRg0JIAAgAkECdGogASACai0AABDdAiIDNgIAIAJBAWohAiADDQALDAkLIAVBAXEgBUEQayICQQFLaiEIIAJBAXZBAmohCQsgASADayEBQQAhAgNAIAIgCUYEQCAJDwUgACACQQJ0aiAGIAJBAXRqLwAAIAFBACACIAhGG2o2AgAgAkEBaiECDAELAAsACyAFQRVrIQcLIAcgASADa2wgBmpBAmohAUEAIQIgBi8AACEDA0AgAiAHRgRAIAcPBSAAIAJBAnRqQSAgASACai0AACIEIANqIARB/wFGGzYCACACQQFqIQIMAQsACwALIAAgBiABIANrQQNsaiIBLwAAIgI2AgAgAkUNAyAAIAEtAAIQ3QI2AgQMAgsgACAGLwAANgIAIAAgBi8AAjYCCCAAIAEgA2tBAXQgBmovAAQ2AgRBAw8LIAEgA2shAiAAAn8gBUEhRgRAIAYgAkF+cWoiAUEBaiEHIAEtAAAQ3QIMAQsgBiACQQF2QQNsaiIBQQJqIQcgAS8AAAsiAUEgQSBBASABQZAIa0EgSRsgAUGAAkkbaiABIAJBAXEbNgIAIAAgBy0AABDdAjYCBAtBAiEICyAIDwtBAAuPAgEGfyABQQJ0QaDiA2ooAgAiAiABQQF0QfDjA2ovAQBqIQdBACEBAkADQCACIAdPDQEgAkEBaiEFAkACQCACLQAAIgNBP00EQCAEIANBA3ZqQQFqIQIgAQRAIAAgBCACEH8NAwsgAUEBcyEBIANBB3EgAmpBAWohAwwBCwJ/IAMgBGpB/wBrIANBGHRBGHVBAEgNABogA0HfAE0EQCACQQJqIQUgAi0AASAEIANBCHRqakH//wBrDAELIAJBA2ohBSACLQACIAQgA0EQdGogAi0AAUEIdGpqQf///wJrCyEDIAQhAgsgAQRAIAAgAiADEH8NAQsgAUEBcyEBIAUhAiADIQQMAQsLQX8hBgsgBgujAgEIfyABQQZxIQYgAUECdkEBcSEJQdDDAyEDAkADQCADQYniA08NASACIQQgAy0AACICQR9xIQUCfyADQQFqIAJBBXYiAkEHRw0AGiADLAABIghB/wFxIQIgCEEATgRAIAJBB2ohAiADQQJqDAELIAhBv39NBEAgAy0AAiACQQh0ckH5/gFrIQIgA0EDagwBCyADLQADIAJBEHRyIAMtAAJBCHRyQfn+/gVrIQIgA0EEagshAyACIARqQQFqIQICQAJAIAVBH0YEQCAGRQ0DIAZBBkYNASAEIAlqIQQDQCACIARNDQQgACAEIARBAWoQfyEFIARBAmohBCAFRQ0ACwwCCyABIAV2QQFxRQ0CCyAAIAQgAhB/RQ0BCwtBfyEHCyAHCzgAQYC2AiABELUDIgFBAEgEQEF+DwsgACABQR1NBH9CASABrYanBSABQQJ0Qai6AmooAgALELYEC7gCAQl/IwBB0ABrIgYkACACQQAgAkEAShshDANAIAcgDEcEQAJAIAEgB0ECdGooAgAiAkGA2AJrIgRBo9cATQRAIAAgBEH//wNxIgJBzARuIgVBgCJyEB4gACAEIAVBzARsa0H//wNxQRxuQeEiahAeIAJBHHAiAkUNASAAIAJBpyNqEB4MAQtBACEEQQAhCkG0BSEFAkADQCAEIAVKDQEgAiAEIAVqQQJtIghBAnRB4MMCaigCACIJQQ52IgtJBEAgCEEBayEFDAELIAIgCUEHdkH/AHEiBCALak8EQCAIQQFqIQQMAQsLIAlBAXEgA0sNACAGIAIgCCALIAQgCUEBdkE/cRC0BCEKCyAKIgQEQCAAIAYgBCADELgEDAELIAAgAhAeCyAHQQFqIQcMAQsLIAZB0ABqJAALEQAgAEGQ+QFB0IECQSIQ4QILtQEBB38gACgCACEFIAAoAgghAgNAIAFBAWoiAyAFTkUEQAJAIAIgAUECdGooAgAiByACIANBAnRqKAIARgRAIAEhAwwBCwNAAkAgASIDQQFqIQYgAUEDaiAFTg0AIAIgBkECdGooAgAgAiADQQJqIgFBAnRqKAIARg0BCwsgAiAEQQJ0aiIBIAc2AgAgASACIAZBAnRqKAIANgIEIARBAmohBAsgA0ECaiEBDAELCyAAIAQ2AgALEQAgAEHw8gFBwPgBQRcQ4QILpQEBA38gASACEN4CQf///wBxSQRAIABBADYCAEEADwtBfyEEIAIgA0EBayIFQQNsahDeAiABSwR/QQAhAwNAIAUgA2tBAkhFBEAgAyAFakECbSIEIAUgAiAEQQNsahDeAkH///8AcSABSyIGGyEFIAMgBCAGGyEDDAELCyAAIAIgA0EDbGoQ3gIiAEH///8AcTYCACADQQV0IABBFXZqQSBqBUF/CwtuAQV/QfECIQEDQCABIAJOBEAgACABIAJqQQF2IgNBAnRBwOEBaigCACIEQQ92IgVJBEAgA0EBayEBDAILIAAgBEEIdkH/AHEgBWpJBEBBAQ8FIANBAWohAgwCCwALCyAAQZDxAUHQ8gFBBhDhAgtJAQF/An8gACgCACICIAAoAgROBEBBfyAAIAJBAWoQ4AINARogACgCACECCyAAIAJBAWo2AgAgACgCCCACQQJ0aiABNgIAQQALCzUBAX8jAEEQayIDJAAgAyABNgIIIAMgAkEBajYCDCAAIANBCGpBAhC2AyEAIANBEGokACAAC5cCAQN/IAEoAgAiAkH+/wdPBEAgAEHdJkEAED9Bfw8LAkAgAkEBTQRAIABBAkF/ELoBGgwBCyABKAIIIAJBAnRqIgRBBGsoAgAiA0F/RgRAIARBCGsoAgAhAwsgAkEBdiECIANB//8DTQRAIABBFSACELgDQQAhAgNAIAIgASgCAE4NAiAAIAJBAnQiAyABKAIIai8BABAxIABBfyABKAIIIANBBHJqKAIAQQFrIgMgA0F+RhtB//8DcRAxIAJBAmohAgwACwALIABBFiACELgDQQAhAgNAIAIgASgCAE4NASAAIAJBAnQiAyABKAIIaigCABAeIAAgASgCCCADQQRyaigCAEEBaxAeIAJBAmohAgwACwALQQALJgEBfyAAKAI4IgFBAEgEQCAAIAAgAEE8akEAEMIEIgE2AjgLIAEL4AIBBX8jAEGQAWsiBCQAIAFBADYCACAAKAIgIQNBASEGA0AgBCADNgKMAQJAAkACQCAAKAIcIgcgA00EQCAGIQUMAQsCQAJAAkACQCADLQAAIgVB2wBrDgIBAgALIAVBKEcNBSADLQABQT9HDQIgAy0AAkE8Rw0FIAMtAAMiBUEhRiAFQT1Gcg0FIAFBATYCAAJAIAJFDQAgBCADQQNqNgKMASAEIARBjAFqIAAoAigQuwMNACAEIAIQrARFDQULIAZBAWohBSAGQf0BSg0DIAQoAowBIQMgBSEGDAULA0AgBCADIgVBAWoiAzYCjAEgAyAHTw0FAkAgAy0AAEHcAGsOAgAGAQsgBCAFQQJqIgM2AowBDAALAAsgBCADQQFqIgM2AowBDAMLIAZB/QFKIQcgBkEBaiIFIQYgB0UNAgtBfyAFIAIbIQYLIARBkAFqJAAgBg8LIANBAWohAwwACwALXQEEfyABEEMhAyAAKAJEIgIgACgCSGohBEEBIQADQAJAIAIgBE8EQEF/IQAMAQsgAyACEEMiBUYEQCABIAIgAxB3RQ0BCyAAQQFqIQAgAiAFakEBaiECDAELCyAAC+EaAQh/IAAoAgQhDiAAKAIIIQwDQAJAIAUhByAEQQFqIQgCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkAgBC0AACINQQFrDhwCAQkKBwgGBAQACwsMDw0OEhITExoZBQUQERgXFgtBASEEIAZFDR8gByEEDCALQQUhCSAIKAAADAELQQMhCSAILwAACyEIIAcgDk8NGwJAIAxFBEAgB0EBaiEFIActAAAhCgwBCyAHLwEAIgpBgPgDcUGAsANHIAxBAkdyIA4gB0ECaiIFTXINACAFLwEAIgtBgPgDcUGAuANHDQAgCkEKdEGA+D9xIAtB/wdxckGAgARqIQogB0EEaiEFCyAEIAlqIQQgACgCGAR/IAogACgCHBDNAQUgCgsgCEYNHgwbCyAEQQVqIgkgCSAIKAAAaiIIIA1BCUYiChshBCAAIAEgAiADIAggCSAKGyAHQQBBABC9A0EATg0dDBkLIAAgASACIAMgBEEFaiIEIAgoAABqIAcgDUEWa0EAEL0DQQBODRwMGAsgCCAIKAAAakEEaiEEDBYLIAghBCAFIAAoAgAiCEYNGiAAKAIURQ0XAkAgDEUEQCAFQQFrLQAAIQsMAQsgBUECay8BACILQYD4A3FBgLgDRyAMQQJHcg0AIAggBUEEayIHSw0AIAcvAQAiCEGA+ANxQYCwA0cNACALQf8HcSAIQf8HcUEKdHJBgIAEaiELCyALELwDDRoMFwsgCCEEIAcgDiIFRg0ZIAAoAhRFDRYCQCAMRQRAIActAAAhCQwBCyAHLwEAIglBgPgDcUGAsANHIAxBAkdyIAdBAmogDk9yDQAgBy8BAiIFQYD4A3FBgLgDRw0AIAlBCnRBgPg/cSAFQf8HcXJBgIAEaiEJCyAHIQUgCRC8Aw0ZDBYLIAcgDkYNFQJAIAxFBEAgB0EBaiEFIActAAAhCQwBCyAHLwEAIglBgPgDcUGAsANHIAxBAkdyIA4gB0ECaiIFTXINACAFLwEAIgRBgPgDcUGAuANHDQAgCUEKdEGA+D9xIARB/wdxckGAgARqIQkgB0EEaiEFCyAIIQQgCRC8A0UNGAwVCyAHIA5GDRQgDEUEQCAHQQFqIQUgCCEEDBgLIAghBCAHLwEAQYD4A3FBgLADRyAMQQJHciAOIAdBAmoiBU1yDRcgB0EEaiAFIAcvAQJBgPgDcUGAuANGGyEFDBcLIAgtAAAiBSAAKAIMTw0JIA0gBUEBdGpBAnQgAWpBLGsgBzYCACAEQQJqIQQMEQsgBC0AAiIJIAAoAgxPDQcgBEEDaiEEIAgtAAAhBQNAIAUgCUsNESABIAVBA3RqQgA3AgAgBUEBaiEFDAALAAsgAiADQQJ0aiAIKAAANgIAIANBAWohAyAEQQVqIQQMDwsgA0EBayEDDA0LIAgoAAAhBSADQQJ0IAJqQQRrIgggCCgCAEEBayIINgIAIAQgBUEAIAgbakEFaiEEDA0LIAIgA0ECdGogBzYCACADQQFqIQMMCwsgBEEAIAgoAAAgAiADQQFrIgNBAnRqKAIAIAdGG2pBBWohBAwLC0EAIQlBACELIAAoAgAiBCAHRwRAAkAgDEUEQCAHQQFrLQAAIQUMAQsgB0ECay8BACIFQYD4A3FBgLgDRyAMQQJHcg0AIAQgB0EEayIKSw0AIAovAQAiBEGA+ANxQYCwA0cNACAFQf8HcSAEQf8HcUEKdHJBgIAEaiEFCyAFEOMCIQsLIAcgDkkEQAJAIAxFBEAgBy0AACEFDAELIAcvAQAiBUGA+ANxQYCwA0cgDEECR3IgB0ECaiAOT3INACAHLwECIgRBgPgDcUGAuANHDQAgBUEKdEGA+D9xIARB/wdxckGAgARqIQULIAUQ4wIhCQsgByEFIAghBEESIA1rIAkgC3NGDQ8MDAsgBC0AASIIIAAoAgxPDQsgBEECaiEEIAEgCEEDdGoiCCgCACIKRQ0OIAgoAgQiC0UNDiANQRNGDQcDQCAKIAtPDQ8gBSAAKAIAIg1GDQwCQAJ/AkAgDARAIAtBAmsiBy8BACIIQYD4A3FBgLgDRyAMQQJHciAHIApNcg0BIAdBAmsvAQAiCUGA+ANxQYCwA0cNASAIQf8HcSAJQf8HcUEKdHJBgIAEaiEIIAtBBGsMAgsgBUEBayIFLQAAIQkgC0EBayILLQAAIQgMAgsgBwshCwJAIAVBAmsiBy8BACIJQYD4A3FBgLgDRyAMQQJHciAHIA1Ncg0AIAdBAmsvAQAiDUGA+ANxQYCwA0cNACAJQf8HcSANQf8HcUEKdHJBgIAEaiEJIAVBBGshBQwBCyAHIQULIAAoAhgEQCAIIAAoAhwQzQEhCCAJIAAoAhwQzQEhCQsgCCAJRg0ACwwLC0G+F0HV4wBB3RFBvMAAEAAAC0GnF0HV4wBB1BFBvMAAEAAACxABAAsgBEERaiINIAgoAABqIQdBACEJIAQoAAUhCiAEKAAJIQsDQAJAAkAgACABIAIgAyANIAVBARDEBCIEQQFqDgIMAQALIAQhBSALQf////8HRiALIAlBAWoiCUtyDQELCyAJIApJDQcgByEEIAkgCk0NCiAAIAEgAiADIAggBUEDIAkgCmsQvQNBAE4NCgwGCyAHIAAoAgAiCUYNBiAMRQRAIAdBAWshBSAIIQQMCgsgB0ECayEFIAghBCAMQQJHDQkgBS8BAEGA+ANxQYC4A0cgBSAJTXINCSAHQQRrIAUgBUECay8BAEGA+ANxQYCwA0YbIQUMCQsgCC8AACELIAcgDk8NBQJAIAxFBEAgB0EBaiEFIActAAAhCQwBCyAHLwEAIglBgPgDcUGAsANHIAxBAkdyIA4gB0ECaiIFTXINACAFLwEAIghBgPgDcUGAuANHDQAgCUEKdEGA+D9xIAhB/wdxckGAgARqIQkgB0EEaiEFCyAAKAIYBEAgCSAAKAIcEM0BIQkLIAkgBEEDaiIHKAAASQ0FQQAhCiAJIAQgC0EBayIIQQN0aigAB0sNBQNAIAggCkkNBiAJIAcgCCAKakEBdiIEQQN0aiINKAAASQRAIARBAWshCAwBCyAJIA0oAARLBEAgBEEBaiEKDAELCyAHIAtBA3RqIQQMCAsgCC8AACEKIAcgDk8NBAJAIAxFBEAgB0EBaiEFIActAAAhCQwBCyAHLwEAIglBgPgDcUGAsANHIAxBAkdyIA4gB0ECaiIFTXINACAFLwEAIghBgPgDcUGAuANHDQAgCUEKdEGA+D9xIAhB/wdxckGAgARqIQkgB0EEaiEFCyAAKAIYBEAgCSAAKAIcEM0BIQkLIAkgBEEDaiIHLwAASQ0EAkAgBCAKQQFrIghBAnRqLwAFIgtB//8DRiAJQf//A09xDQBBACEEIAkgC0sNBQNAIAQgCEsNBiAJIAcgBCAIakEBdiILQQJ0aiINLwAASQRAIAtBAWshCAwBCyAJIA0vAAJNDQEgC0EBaiEEDAALAAsgByAKQQJ0aiEEDAcLA0AgCiALTw0HIAUgDk8NBAJ/An8CQCAMBEAgCi8BACIIQYD4A3FBgLADRyAMQQJHciAKQQJqIgcgC09yDQEgBy8BACIJQYD4A3FBgLgDRw0BIAhBCnRBgPg/cSAJQf8HcXJBgIAEaiEIIApBBGoMAgsgBS0AACEJIAotAAAhCCAKQQFqIQogBUEBagwCCyAHCyEKAkAgBS8BACIJQYD4A3FBgLADRyAMQQJHciAFQQJqIgcgDk9yDQAgBy8BACINQYD4A3FBgLgDRw0AIAlBCnRBgPg/cSANQf8HcXJBgIAEaiEJIAVBBGoMAQsgBwshBSAAKAIYBEAgCCAAKAIcEM0BIQggCSAAKAIcEM0BIQkLIAggCUYNAAsMAwsgCCEEDAULIAchBQwEC0F/DwtBACEEIAYNAQsgACgCMCEFAkADQCAFRQ0CAkACQAJAAkACQCAAKAIoIAVBAWsiBSAAKAIkbGoiBy0AACIDDgQAAgIBAgtBASEIIAQNAgwDC0EBIQggBA0BIAEgB0EQaiIDIAAoAgxBA3QQJRogAiADIAAoAgxBA3RqIActAAEiA0ECdBAlGiAHKAIIIQVBACEEIAcoAgwiCSgADCEKA0ACfwJAIAQgCkcEQCAFQQFrIAxFDQIaIAVBAmshCCAMQQJHDQEgCC8BAEGA+ANxQYC4A0cNASAIIAAoAgBNDQEgBUEEayAIIAhBAmsvAQBBgPgDcUGAsANGGwwCCyAJKAAAIQQgByAFNgIIIAcgBygCBEEBayIINgIEIAQgCWpBEGohBCAIDQkgACAAKAIwQQFrNgIwDAkLIAgLIQUgBEEBaiEEDAALAAtBACEIIARBAEciBCADQQFGIglxQQEgBCADQQJHchtFDQAgCUUNAQwDCyAAIAU2AjAgCCEEDAELCyABIAdBEGogACgCDEEDdBAlGgsgBygCCCEFIAcoAgwhBCACIAcgACgCDEEDdGpBEGogBy0AASIDQQJ0ECUaIAAgACgCMEEBazYCMAwBCwsgBAucAgEEfyMAQUBqIgckACAHIAEtAAAiCEEBdkEBcTYCICAHIAhBAnZBAXE2AhwgByAIQQR2QQFxIgg2AiQgByABLQABIgk2AhQgAS0AAiEKIAdBADYCOCAHIAY2AiggByAFQQIgBSAIGyAFQQFHGzYCECAHIAIgBCAFdGo2AgwgByACNgIIIAcgCjYCGCAHQgA3AzAgByAKQQJ0IgYgCUEDdGpBEGo2AiwgCUEBdCEEQQAhCANAIAQgCEZFBEAgACAIQQJ0akEANgIAIAhBAWohCAwBCwsgByAGQQ9qQfAPcWsiBCQAIAdBCGogACAEQQAgAUEHaiACIAMgBXRqQQAQxAQhACAHKAIoIAcoAjBBABCFBBogB0FAayQAIAALiiEBEn8gACgCBCEQA0BBACEDAkACQCAAKAIYIgIgACgCHE8NACACLQAAIgJBKUYgAkH8AEZyDQAgACgCBCESQQAhBEEAIQlBACEGIwBBIGsiBSQAIAUgACgCGCICNgIcAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAItAAAiA0Ekaw4LAQkJCQQJEhIJCQIACwJAAkAgA0HbAGsOBAcGCAEACyADQfsAaw4DAwkHCAsgBSACQQFqNgIcIABBBRBfDA4LIAUgAkEBajYCHCAAQQYQXwwNCyAFIAJBAWo2AhwgACgCNCEJIAAoAgQhAyABRQ0JIABBGxBfIABBBEEDIAAoAjAbEF8gAEEbEF8MCwsgACgCKARAIABBkitBABA/DBALIAItAAEQRUUNBSAFIAJBAWo2AgggBUEIakEBEKsCGgJAIAUoAggiAy0AACICQSxHDQAgBSADQQFqNgIIIAMtAAEiAhBFRQ0AIAVBCGpBARCrAhogBSgCCC0AACECCyACQf8BcUH9AEcNBQwOCwJAIAItAAFBP0YEQEEDIQdBACEDAkACQAJAAkAgAi0AAiIEQTprDgQAAwEOAgsgACACQQNqNgIYIAAoAjQhCSAAKAIEIQNBfyECIAAgARDkAg0UIAUgACgCGDYCHCAAIAVBHGpBKRDiAkUNDgwUC0EBIQNBBCEHIAItAAMiBEE9RgRAQQEhBgwNC0EBIQYgBEEhRg0MIAUgAkEDajYCHCAAQdwAaiIDIAVBHGogACgCKBC7AwRAIABBgc8AQQAQPwwTCyAAIAMQwwRBAEoEQCAAQezOAEEAED8MEwsgAEHEAGogAyADEENBAWoQigEaIABBATYCPAwDCyAEQSFGDQsLIABB6DNBABA/DBALIAUgAkEBajYCHCAAQcQAakEAEBALIAAoAjQiCUH/AU4EQCAAQYElQQAQPwwPCyAAIAlBAWo2AjQgACgCBCEDIAAgAUELaiAJEK0CIAAgBSgCHDYCGEF/IQIgACABEOQCDQ8gBSAAKAIYNgIcIABBDCABayAJEK0CIAAgBUEcakEpEOICRQ0JDA8LAkACQAJAAkACQAJAAkAgAi0AASIDQTBrDhMDBAQEBAQEBAQECgoKCgoKCgoBAAsgA0HrAEYNASADQeIARw0JCyAAQRFBEiADQeIARhsQXyAFIAJBAmo2AhwMDgsCQCACLQACQTxHBEBB184AIQIgACgCKA0BIAAQugMNAQwJCyAFIAJBA2o2AgggAEHcAGoiAyAFQQhqIAAoAigQuwMEQEGBzwAhAiAAKAIoDQEgABC6Aw0BDAkLIAAgAxDDBCIEQQBODQMgACAFQQRqIAMQwgQiBEEATg0DQcThACECIAAoAigNACAAELoDRQ0ICyAAIAJBABA/DBELIAUgAkECajYCHCACLQACIQMgACgCKARAIAMQRUUNCSAAQcM3QQAQPwwRCyADQfgBcUEwRw0IIAUgAkEDajYCHCACLQACQTBrIQQgAi0AA0H4AXFBMEcNCCAFIAJBBGo2AhwgAi0AAyAEQQN0akEwayEEDAgLIAUgAkEBaiIDNgIcIAVBHGpBABCrAiIEQQBOBEAgBCAAKAI0SA0CIAAQwQQgBEoNAgsgACgCKEUEQCAFIAM2AhwgAy0AACIJQTdLDQdBACEEIAlBM00EQCAFIAJBAmoiAzYCHCACLQACIQkgAi0AAUEwayEECyAJQfgBcUEwRw0IIAUgA0EBajYCHCADLQAAIARBA3RqQTBrIQQgAy0AAUH4AXFBMEcNCCAFIANBAmo2AhwgAy0AASAEQQN0akEwayEEDAgLIABB8DdBABA/DA8LIAUgBSgCCDYCHAsgACgCNCEJIAAoAgQhAyAAIAFBE2ogBBCtAgwICyAAKAI0IQkgACgCBCEDIAEEQCAAQRsQXwtBfyECIwBBQGoiBiQAIAZBKGogACgCQEHsAhCIASAGIAUoAhwiCEEBaiIENgI8IAgtAAEiC0HeAEYEQCAGIAhBAmoiBDYCPAsCfwJAA0ACQAJAIAQtAABB3QBHBEAgACAGQRBqIAZBPGpBARC5AyIIQQBIDQQCQAJAAkACQCAGKAI8IgQtAABBLUcNACAELQABQd0ARg0AIAYgBEEBajYCDCAIQYCAgIAETwRAIAAoAihFDQEgBkEQahBSDAMLIAAgBkEQaiAGQQxqQQEQuQMiB0EASA0IIAdBgICAgARJDQEgBkEQahBSIAAoAigNAgsgCEGAgICABEkNAiAGQShqIAYoAhggBigCEBC2AyEIIAZBEGoQUiAIRQ0GDAULIAYgBigCDCIENgI8IAcgCE8NAwsgAEH60gBBABA/DAULIAZBKGogCCAIEL8ERQ0DDAILIAAoAiwEQCMAQSBrIggkACAIQQhqIgcgBkEoaiIKKAIMQewCEIgBIAhC4YCAgLAPNwIAIAcgCigCCCAKKAIAIAhBAkEBEKoCIgdFBEBBACEHIAgoAhAhDANAIAgoAggiDSAHSgRAIAwgB0ECdGoiDSANKAIAQSBrNgIAIAdBAWohBwwBCwsgCiAMIA0QtgMhBwsgCEEIahBSIAhBIGokACAHDQILIAtB3gBGBEAgBkEoahCpAg0CCyAAIAZBKGoQwAQNAyAGQShqEFIgBSAEQQFqNgIcQQAMBAsgBkEoaiAIIAcQvwRFDQELCyAAEKwCCyAGQShqEFJBfwshBCAGQUBrJAAgBA0NIAFFDQcgAEEbEF8MBwsgACgCKEUNASAAQZIrQQAQPwwLCyADQT9GDQkLIAAgBUEIaiAFQRxqQQAQuQMiBEEATg0BDAkLIAUgAkECajYCHCACLQABIQQLIAAoAjQhCSAAKAIEIQMgAQRAIABBGxBfCwJAIARBgICAgAROBEAgACAFQQhqIgIQwAQhBiACEFJBfyECIAZFDQEMCgsgACgCLARAIAQgACgCKBDNASEECyAEQf//A0wEQCAAQQEgBBC4AwwBCyAAQQIgBBC6ARoLIAFFDQIgAEEbEF8MAgsgAEEEQQMgACgCMBsQXwwBCyACIAdqIQhBfyECAn9BfyADDQAaQX8gACgCKA0AGiAAKAI0IQkgACgCBAshAyAAQRhBFyAEQSFGG0EAELoBIQQgACAINgIYIAAgBhDkAg0GIAUgACgCGDYCHCAAIAVBHGpBKRDiAg0GIABBChBfIAAoAgwNBiAAKAIAIARqIAAoAgQgBGtBBGsQXQsgA0EASA0AAkACQAJAAkACQAJAIAUoAhwiAi0AACIGQSprDgIBAgALIAZBP0YNAiAGQfsARw0FIAItAAEQRQ0DIAAoAihFDQUMBwsgBSACQQFqIgI2AhxBACEEQf////8HIQgMAwtBASEEIAUgAkEBaiICNgIcQf////8HIQgMAgtBASEIIAUgAkEBaiICNgIcQQAhBAwBCyAFIAJBAWo2AhwgBUEcakEBEKsCIgQhCAJAIAUoAhwiBy0AACIGQSxHDQAgBSAHQQFqNgIcIActAAEiBhBFRQRAQf////8HIQgMAQsgBUEcakEBEKsCIgggBEgNBCAFKAIcLQAAIQYLAkAgBkH9AEYNACAAKAIoDQAgBSACNgIcDAILQX8hAiAAIAVBHGpB/QAQ4gINBiAFKAIcIQILAn8gAi0AAEE/RgRAIAUgAkEBajYCHCAAKAIEIANrIQdBACEGQQAMAQsCQCAIQQBMDQAgACgCDA0DIAAoAgAgA2ohCyAAKAIEIANrIQ1BACEHQQAhAgNAAkAgByANTgRAIAIhBgwBC0F/IQYgByALaiIOLQAAIg9BoOEBai0AACEKQQIhDAJAAkACQAJAIA9BAWsOFgICAgIDAwQEBAQEBAQEBAQDAwQEAQAEC0EDIQwLIA4vAAEgDHQgCmohCgsgAkEBaiECCyAHIApqIQcMAQsLIAYiAkEATA0AIABBChBfIAAgA0EREOsBDQMgACgCACADakEcOgAAIAMgACgCAGpBAWogACgCBCADa0ERaxBdIAMgACgCAGpBBWogBBBdIAMgACgCAGpBCWogCBBdIAMgACgCAGpBDWogAhBdDAILIAAoAgwNAkEBIQYgACgCACADaiETIAAoAgQgA2shB0EAIQ1BACEPIwBBgAJrIgIkACACQQBB/wEQSyEMQX4hCgNAIAcgDUoEQCANIBNqIgstAAAiEUGg4QFqLQAAIQ5BAiECAkACQAJAAkACQAJAAkACQCARQQFrDhsCAgICBwcGBgYGAwMEBgcHBwcFBQEABgYHBgcGC0EDIQILIAsvAAEgAnQgDmohDgtBASAKIApBfkYbIQoMBAsgDCALLQABaiICIAItAABBAXI6AAAMAwsgCy0AASICIAstAAIiCyACIAtLGyELA0AgAiALRg0DIAIgDGoiESARLQAAQQFyOgAAIAJBAWohAgwACwALQQEhDyAMIAstAAFqIgIgAi0AAEECcjoAAAwBC0EAIAogCkF+RhshCgsgDSAOaiENDAELCwJ/AkAgD0UNAEEAIQIDQCACQf8BRg0BIAIgDGohCyACQQFqIQIgCy0AAEEDRw0AC0F/DAELQQAgCiAKQX5GGwshAiAMQYACaiQAIAJFCyECAkAgBEUEQCAAKAI0IAlHBEAgACADQQMQ6wENBCAAKAIAIANqQQ06AAAgAyAAKAIAaiAJOgABIAMgACgCAGogAC0ANEEBazoAAiADQQNqIQMLAkACQAJAIAgOAgABAgsgACADNgIEDAQLIAAgA0EFEOsBDQQgACgCACADaiAGQQhyOgAAIAAoAgAgA2pBAWogBxBdDAMLIAhB/////wdGDQEgACADQQoQ6wENAyAAKAIAIANqQQ86AAAgAyAAKAIAakEBaiAIEF0gA0EFaiICIAAoAgBqIAZBCHI6AAAgAyAAKAIAakEGaiAHQQVqEF0gAEEOIAIQzAEgAEEQEF8MAgsgAiAEQQFHIAhB/////wdHcnJFBEAgAEEJIAZrIAMQzAEMAgsgBEEBRwRAIAAgA0EFEOsBDQMgACgCACADakEPOgAAIAAoAgAgA2pBAWogBBBdIABBDiADQQVqIgMQzAEgAEEQEF8LIAhB/////wdGBEAgACgCBCEEIAAgBkEIciACIAdqQQVqELoBGiACBEAgAEEZEF8gACADIAcQvwMgAEEaIAQQzAEMAwsgACADIAcQvwMgAEEHIAQQzAEMAgsgBCAITg0BIABBDyAIIARrELoBGiAAKAIEIQIgACAGQQhyIAdBBWoQugEaIAAgAyAHEL8DIABBDiACEMwBIABBEBBfDAELIAAgAyACQQVqEOsBDQEgACgCACADaiAGQQhyOgAAIAAoAgAgA2pBAWogAiAHakEFahBdIAIEQCADIAAoAgBqQRk6AAUgAEEaIAMQzAEMAQsgAEEHIAMQzAELIAAgBSgCHDYCGEEAIQIMBAsgABCsAgwCCyAAQesXQQAQPwwBCyAAQdkdQQAQPwtBfyECCyAFQSBqJAAgAiIDDQAgAUUNAiAAIAAoAgQiAyASayICIANqEM4BRQ0BQX8hAwsgAw8LIAAoAgAgEGoiBiACaiAGIAMgEGsQgQIgACgCACIGIBBqIAMgBmogAhAlGgwACwALCQAgASACEPIFC5UBAQN+IAG9IgJC////////////AIMhAyAAvSIEQv///////////wCDQoGAgICAgID4/wBaBEAgA0KBgICAgICA+P8AVA8LAn9BfyADQoCAgICAgID4/wBWIAAgAWNyDQAaQQEgACABZA0AGkEAIABEAAAAAAAAAABiDQAaIARCAFMEQCACQj+Hp0F/cw8LIAJCP4inCwujAQEBfgJAAkAgAkUEQCAAQS8QMiEEIAEQEiECDAELIAMpAwAhBAJ+AkAgARASIgJFDQAgBBD2A0UNACAAQdf5ACAAIAAoAhAgBKcQ1gIQMkHJ+QAQvwEMAQsgACAEEC4LIgQQDQ0BCyACDQAgACABQQUQbyIBEA1FBEAgACABIAQQzwEgACABQTAgBKcpAgRC/////weDQQAQGxoLIAEhBAsgBAtKAgF/AX5CgICAgOAAIQQgACABIAIQmwEiAwR+IAMQmgEEQCACRQRAQgAPCyAAEHVCgICAgOAADwsgAygCIDUCEAVCgICAgOAACwsqACAAIAEgAhCbASIARQRAQoCAgIDgAA8LIAAoAiA1AgxCgICAgHCEEA8LRgEBfwJAIAAoAgggAmoiAyAAKAIMSgRAIAAgAyABENUCDQELA0AgAkEATARAQQAPCyACQQFrIQIgACABEJYBRQ0ACwtBfwt4AQV/IAEoAgRB/////wdxIgNFBEAgAg8LIAAoAgRB/////wdxIQUgA0EBayEGIAFBABBNIQcCQANAIAIgA2ogBUoNASAAIAcgAhDZASIEQQBIIAMgBGogBUpyDQEgACABIARBAWoiAkEBIAYQwgMNAAsgBA8LQX8LggEBAn8CQAJAIAAgARCDBCIDQQBIDQAgA0UNASAAIAFB7QAgAUEAEBQiARANDQBBiRwhAgJAIAEQEg0AIAEQKA0AIAAgARA9IgEQDQ0BQQAhAiABp0HnAEEAENkBIQMgACABEAwgA0EATg0CQeXFACECCyAAIAJBABAWC0F/IQILIAILXAEBfwJAAkACQAJAIAFCIIinQQFqDgMBAgACCyABEA8PCyABpyICLwEGQQZHDQAgAikDICIBQoCAgIBwg0KAgICAEFENAQsgAEHWO0EAEBZCgICAgOAAIQELIAELEABBvv4AIABBCxClAkEARwtdAQJ/QbH+ACEDAkACQCABKAIEQf////8HcSIEIAJMDQAgASACEE1BJUcNAEGxGSEDIAJBAmogBE4NACABIAJBAWpBAhDDAyICQQBODQELIAAgAxDEA0F/IQILIAILVAAjAEEQayICJAAgACACQQhqIAMpAwAQRwR+QoCAgIDgAAUgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUq1CgICAgBCECyEBIAJBEGokACABC1QAIwBBEGsiAiQAIAAgAkEIaiADKQMAEEcEfkKAgICA4AAFIAIpAwhC////////////AINCgICAgICAgPj/AFatQoCAgIAQhAshASACQRBqJAAgAQv4AgIDfwN+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAFQQBMIQVCACEDA0ACQCADIA1RBEAgBCEMDAELQn8hDCAAIAIgAyAIQShqEIwBIglBAEgNAAJAIAlFDQAgBhASRQRAIAggCCkDKDcDACADIQsgA0KAgICACFoEQCADuRAXIQsLIAggAjcDECAIIAs3AwggCCAAIAYgB0EDIAgQJCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAsQDQ0CCwJAAkACQCAFDQAgACAIKQMoIgsQwgEiCUEASA0BIAlFDQAgACAIQSBqIAsQQUEASA0BIAAgASALIAgpAyAgBCAKQoCAgIAwQoCAgIAwENQEIgRCAFMNASAAIAsQDAwDCyAEQv////////8PUw0BIABBi8MAQQAQFiAIKQMoIQsLIAAgCxAMDAILIAAgASAEIAgpAygQcEEASA0BIARCAXwhBAsgA0IBfCEDDAELCyAIQTBqJAAgDAsMACAAQgAgAEIAVRsLKAACQCABEBJFBEAgARAoRQ0BCyAAIAEQPQ8LIAAgAUE4QQBBABC6AgujAgIGfwF+IwBBMGsiAiQAAkACQCADKQMAIgEQIkUNAEKAgICA4AAhCyAAIAEQmQQiA0EASA0BIANFBEAgAEHdygBBABAWDAILIAAgAkEsaiACQShqIAGnIglBAxCSAQ0BIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgBiADQQN0aigCBCEIQYCCASEFAkAgBEUNACAAIAJBCGogCSAIEE8iCkEASA0DIApFDQAgAigCCCEFIAAgAkEIahBOQYCGAUGAggEgBUECcRshBQsgACABIAhCgICAgDBCgICAgDBCgICAgDAgBRB4QQBIDQIgA0EBaiEDDAELCyAAIAYgBxBmDAELIAAgBiAHEGYMAQsgARAPIQsLIAJBMGokACALC+sBAQF+AkACQCABECgEQCAAQek9EHYhBAwBCyABEBIEQCAAQf/gABB2IQQMAQsgACABECsiARANDQEgACABEMIBIgNBAEgEQCAAIAEQDEKAgICA4AAPCwJ/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RQRAIAUgAigCDCABGyEDIAYhAQwCCyADQQZrDgICAAYLIABBiNgAQQAQFQwECyACQShqIAQQwAFFDQEMAwsLIABBnzNBABAVDAELIABBxDNBABAVCyACQShqEEQgAkEQahBECyACQUBrJAAgCAszAQF/A0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBBry4hAyABKAJADQMLQdbVACEDIAJBOkYgAkHNAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQbHVACEDIAEoAoABIAJBBHRqKAIAIgZBOkYgBkHNAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GvEiEDDAILIANBAWohAwwACwALIAAgA0EAEBVBfyEECyAEC2EBAX8gAEG2ARAOIABB9gAQHCAAIAAoAkAvAbwBEBggAEEREA4gAEHpAEF/EB0hASAAQbYBEA4gAEEIEBwgAEEAEBggAEEbEA4gAEEkEA4gAEEAEBggACABECAgAEEOEA4LUQECf0F/IQJBASEDA0ACQCAAIAEQuwENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABARDQAgAEEOEA5BACEDDAELCyACCykBAX4gACABEMoBIgFFBEBCgICAgOAADwsgACABEDIhAiAAIAEQEyACC9sCAQR/IwBBoAFrIgUkACABKAIAIQcgBUGAATYCCCAFIAVBEGo2AgwgBAR/IAVBIzoAEEEBBUEACyEE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DEEHEBsLIQogACAFEBMgB0EBaiEHIApBAE4NAAsMAQsgACAGIAgQZkEAIQYgACACEGAiDBANDQAgBCALNwMYIAQgDDcDECAAIAMgAUECIARBEGoQJCEBIAAgDBAMIAAgCxAMDAELIAAgBiAEKAIMEGYgACALEAxCgICAgOAAIQELIARBIGokACABC+sCAQN/IwBBQGoiAyQAAkAgACABEGMiARANDQACQCAAIANBIGogAaciBCgCBEH/////B3FBAmoQQg0AIANBIGpBIhA+DQAgA0EANgI8A0AgBCgCBEH/////B3EgAkoEQAJAAkACQAJAAkACQAJAAkACQAJAIAQgA0E8ahDbASICQQhrDgYFAgQBBgMACyACQSJGIAJB3ABGcg0GCyACQYBwcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQcAPIAMQVxogA0EgaiACEI4BDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSBqQdwAED4NBCADQSBqIAIQPkUNAQwECyADQSBqIAIQwAENAwsgAygCPCECDAELCyADQSBqQSIQPg0AIAAgARAMIANBIGoQOSEBDAELIAAgARAMIANBIGoQREKAgICA4AAhAQsgA0FAayQAIAELbgEEf0F/IQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAvIgBFDQIgACADIAQQJRoMAQsgACAHIAUQmgIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLYQECfwNAIAAoAigiAUEATEUEQCAAIAFBAWsiATYCKCAAKAIAIAAoAgQgAUEDdGopAwAQDAwBCwsgACgCBCIBIABBCGoiAkcEQCAAKAIAIAEQGgsgAEEENgIsIAAgAjYCBAukBQILfwV+IwBBMGsiAiQAIAEpAyAhDyABKQMYIQ4gASkDCCENIAEpAwAhEAJ+AkACQCABKQMoIhEQngEEQCANEJ4BDQELIABB/MMAQQAQFgwBCyAAIAJBCGpBABBCGiACQQA2AiQCQCAOEBJFBEAgACACQSRqIA4Q3AENAQsgACACQShqIBAQ3AENACAAIAJBLGogASkDEBDHAUEASA0AIA2nIQcgAigCLCIKIAIoAihqIQsgEaciBCgC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CwsNACAAIAEgAkEAEN8BC0MAAnwgAb1CgICAgICAgPj/AINCgICAgICAgPj/AFEEQEQAAAAAAAD4fyAAmUQAAAAAAADwP2ENARoLIAAgARCCBgsLewEBfgJAAn4gBEEEcQRAQSYhAiAAIAEQYwwBC0ElIQIgACABECsLIgEQDQ0AIAAgAhCkASIFEA0NACAAQRAQLyICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBSACEI0BIAUPCyAAIAUQDAsgACABEAxCgICAgOAAC5UBAgJ+AX8gACABEDIhAwJAIAEQXg0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAR+IABBhOcAIANBgucAEL8BBSADCwvcAwEFfyAAQeAAaiIEEHEgAEHQAGohBSAAKAJUIQECQAJAA0AgASAFRwRAIAFBBGstAABBEE8NAiABKAIEIQIgACABQQhrIgNBBhCfBCADIAMtAARBD3FBEHI6AAQgAiEBIAMoAgANASADQQhqIgIQRiACIAQQTAwBCwsMAQtB+vQAQb7jAEHELEG6xgAQAAALIABB1ABqIQEgAEHQAGohAwJAAkADQCADIAEoAgAiAkcEQCACQQhrIgEoAgBBAEwNAiABIAEtAARBD3E6AAQgACABQQcQnwQgAkEEaiEBDAELCyAAQeQAaiEBIABB4ABqIQIDQCACIAEoAgAiAUcEQCAAIAFBCGtBCBCfBCABQQRqIQEMAQsLDAELQZfzAEG+4wBB5yxB7DsQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohBANAIAQgAigCZCIARwRAIABBCGshASAAQQRrLQAAQQ5xBEAgAUEIaiIAEEYgACADEEwFIAIgARDeBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrECEgASEADAELCyADEHEMAQtBv+0AQb7jAEGdLUGwJRAAAAsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQKiEBA0AgAkUEQEEADwsgASACQQFrIgRBA3RqIgUoAgAhAiAFKAIEQTZHBEAgAkH///8fcSECDAELC0EBIQECQCACQf////8DSw0AIAMoAhQgBEEDdGopAwAiAEKAgICAcINCgICAgJB/Ug0AIACnKAIEQf////8HcUEARyEBCyABCwwAIAAgAUHSFBDIAQtQAgF/AX4CQCAAIAFB6QAgAUEAEBQiBBANRQRAIAAgBBAtIQMgACABQcAAIAFBABAUIgEQDUUNAQtCgICAgOAAIQFBACEDCyACIAM2AgAgAQvEAQEEfyABpyIFIAI2AiAgBUIANwIkAkAgAigCPCIGRQ0AAkAgACAGQQJ0EGwiCEUNACAFIAg2AiRBACEFA0AgBSACKAI8Tg0CIAIoAiQgBUEDdGoiBy8BAiEGAkAgBy0AACIHQQFxBEAgACAEIAYgB0EBdkEBcRCKBCIGDQEMAwsgAyAGQQJ0aigCACIGIAYoAgBBAWo2AgALIAggBUECdGogBjYCACAFQQFqIQUMAAsACyAAIAEQDEKAgICA4AAhAQsgAQvrAwEFfyMAQRBrIgckAAJAAkADQCABQQA2AgAgAkEANgIAQQAhBiAFKAIIIghBACAIQQBKGyEIA0ACQCAGIAhGBEBBfyEGDAELIAMgBSgCACAGQQN0aiIKKAIARgRAIAooAgQgBEYNAQsgBkEBaiEGDAELCyAGQQBOBEBBAiEGDAMLIAAgBUEIIAVBBGogBSgCCEEBahCAAQR/QX8FIAUgBSgCCCIGQQFqNgIIIAUoAgAgBkEDdGoiBiADNgIAIAYgACAEEBk2AgRBAAtBAEgEQEF/IQYMAwsgAyAEEL8FIgYEQCAGKAIIRQ0CIAYoAgwiBEH9AEYNAiADKAIQIAYoAgBBA3RqKAIEIQMMAQsLIARBFkcEQANAIAMoAiwgCUoEQAJAAkAgACAHQQxqIAdBCGogAygCECADKAIoIAlBAnRqKAIAQQN0aigCBCAEIAUQoQUiBkEBag4FBgABAQYBCyACKAIAIgYEQCABKAIAIAcoAgxGBEAgBygCCCgCDCAGKAIMRg0CCyABQQA2AgAgAkEANgIAQQMhBgwGCyABIAcoAgw2AgAgAiAHKAIINgIACyAJQQFqIQkMAQsLQQAhBiACKAIADQILQQEhBgwBCyABIAM2AgAgAiAGNgIAQQAhBgsgB0EQaiQAIAYL2QMBCH8gASgCCCIGQQAgBkEAShshBAJAAkADQCAEIAVGDQEgBUECdCEHIAVBAWohBSAHIAEoAgBqKAIAIAJHDQALQQAhBAwBC0F/IQQgACABQQQgAUEEaiAGQQFqEIABDQAgASABKAIIIgRBAWo2AgggASgCACAEQQJ0aiACNgIAIANBAEchCiABQRBqIQsgAUEMaiEJQQAhBQNAAkAgAigCICAFTARAQQAhBEEAIQUDQCAFIAIoAixODQQgBUECdCEDIAVBAWohBSAAIAEgAigCECADIAIoAihqKAIAQQN0aigCBEEBEKIFRQ0ACwwBCwJAIAogAigCHCAFQRRsaiIHKAIQIgRBFkZxDQBBACEGIAEoAhQiCEEAIAhBAEobIQgDQAJAIAYgCEYEQEF/IQYMAQsgASgCDCAGQQxsaigCACAERg0AIAZBAWohBgwBCwsgBiIEQQBIBEAgACAJQQwgCyABKAIUQQFqEIABDQIgASABKAIUIgRBAWo2AhQgASgCDCAEQQxsaiIEIAcoAhA2AgACQCADRQRAIAcoAghFDQELIARBADYCCAwCCyAEIAc2AggMAQsgCSgCACAEQQxsakEANgIICyAFQQFqIQUMAQsLQX8PCyAEC2UBBH8DQCACIAVKBEAgASAFaiIGLQAAIgRBD2ogBCAEQbEBSxsgBCADG0ECdCIEQbCaAWotAAAhByAEQbOaAWotAABBF2tB/wFxQQRNBEAgACAGKAABEPQBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtYAQJ/IAEEQAJAIAAoAgggACgCBCIDIAFqSQ0AIAEQowIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQdz1AEG+4wBBog1BouMAEAAAC0wBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0H56gBBvuMAQbzlAkH/xgAQAAALGAEBfyABpygCICIDBEAgACADIAIRAwALC+NyAhN/AX4jAEEQayIUJAAgASgCyAEiB0EAIAdBAEobIQQDQCACIARHBEAgASgCzAEgAkEDdGpBfzYCBCACQQFqIQIMAQsLIAEoAjwEQCABKALMAUF+NgIMC0EAIQIgASgCfCIEQQAgBEEAShshCAJ+AkACQAJAA0AgAiAIRgRAAkBBAiECIAdBAiAHQQJKGyEHA0ACQCACIAdGBEBBACECA0AgAiAIRg0CAkAgASgCdCACQQR0aiIEKAIIQQBODQAgBCgCBCIHQQJIDQAgBCABKALMASIEIAQgB0EDdGooAgBBA3RqKAIENgIICyACQQFqIQIMAAsACyABKALMASIEIAJBA3RqIgYoAgRBAEgEQCAGIAQgBigCAEEDdGooAgQ2AgQLIAJBAWohAgwBCwsgASgCRARAAkACQCABKAIgDQAgAS0AbkEBcQ0AIAEgACABQdIAEFg2ApABIAEoAjxFDQAgASAAIAFB0wAQWDYClAELAkAgASgCTCIHRQ0AIAEoAqgBQQBIBEAgASAAIAEQygM2AqgBCyABKAKsAUEASARAIAEgACABQfEAEFg2AqwBCwJAIAEoAmBFDQAgASgCsAFBAE4NACABIAAgAUHyABBYNgKwAQsgASgCMEUNACABKAK0AUEATg0AIAEgACABQfMAEFg2ArQBCwJAIAEoAkgiBkUNACAAIAEQ8AIaIAEoAjxFDQAgAS0AbkEBcQ0AAkAgASgCnAFBAE4NACABKALMAUEMaiECA0ACQEF/IQQgAigCACICQQBIDQAgASgCdCACQQR0aiIIKAIEQQFHDQAgAiEEIAgoAgBBzQBGDQAgCEEIaiECDAELCyAEQQBODQAgACABQc0AEFgiCEEASA0AIAEoAnQgCEEEdGoiBCABKALMASICKAIMNgIIIAIgCDYCDCAEQQE2AgQgBCAEKAIMQQJyNgIMIAEgCDYCnAELCwJAIAEoAixFDQAgASgCcCICRQ0AIAAgASACEO8CGgsCQAJAIAEoAiAEQCABIQIMAQsgASECIAEoAsACDQELA0AgAigCBCIEBEAgAigCDCEIAkAgBw0AIAQoAkxFBEBBACEHDAELIAQoAqgBQQBIBEAgBCAAIAQQygM2AqgBCyAEKAKsAUEASARAIAQgACAEQfEAEFg2AqwBCwJAIAQoAmBFDQAgBCgCsAFBAE4NACAEIAAgBEHyABBYNgKwAQtBASEHIAQoAjBFDQAgBCgCtAFBAE4NACAEIAAgBEHzABBYNgK0AQsCQCAGDQAgBCgCSEUEQEEAIQYMAQsgACAEEPACGkEBIQYLAkAgBCgCLEUNACAEKAJwIgJFDQAgACAEIAIQ7wIaCyAEKALMASAIQQN0akEEaiECA0AgAigCACIFQQBOBEAgBCgCdCAFQQR0aiIIIAgoAgwiAkEEcjYCDCAAIAEgBEEAIAUgCCgCACACQQFxIAJBAXZBAXEgAkEDdkEPcRCnARogCEEIaiECDAELCwJAIAVBfkcEQEEAIQIDQCAEKAKIASACTARAQQAhAgNAIAIgBCgCfE4NBAJAIAQoAnQgAkEEdGoiCCgCBA0AIAgoAgAiCEUgCEHRAEZyDQAgACABIARBACACIAhBAEEAQQAQpwEaCyACQQFqIQIMAAsACyAEKAKAASACQQR0aigCACIIBEAgACABIARBASACIAhBAEEAQQAQpwEaCyACQQFqIQIMAAsAC0EAIQIDQCACIAQoAnxODQECQCAEKAJ0IAJBBHRqIggoAgQNACAIEPoERQ0AIAAgASAEQQAgAiAIKAIAQQBBAEEAEKcBGgsgAkEBaiECDAALAAsgBCICKAIgRQ0BQQAhAgNAIAQoAsACIAJMBEAgBCECDAMFIAAgASAEQQAgBCgCyAIgAkEDdGoiCC0AACIFQQF2QQFxIAIgCCgCBCAFQQJ2QQFxIAVBA3ZBAXEgBUEEdhCGAhogAkEBaiECDAELAAsACwsMAQtBi/QAQb7jAEG17AFBvyUQAAALCyABKAKUAwRAQQAhAiABKAKUAyEFAkADQAJAIAEoAvQBIAJMBEBBACEHQQAhAgNAIAIgBSgCIE4NBCAFKAIcIAJBFGxqIggoAghFBEAgCCgCDCEGQQAhCiABKALAAiIEQQAgBEEAShshBANAAkAgBCAKRgRAQX8hCgwBCyABKALIAiAKQQN0aigCBCAGRg0AIApBAWohCgwBCwsgCiIEQQBIBEAgACAGQawUEJUDDAQLIAggBDYCAAsgAkEBaiECDAALAAsgACABQQFBACACIAEoAvwBIAJBBHRqIgQoAgwgBC0ABCIEQQJ2QQFxIARBAXZBAXFBABDLAyEEIAJBAWohAiAEQQBODQELC0F/IQcLIAcNAQsgAUEQaiEHIAEoAhQhAgJAA0AgAiAHRwRAIAIoAgQhBCACQRBrKAIAIQYgACACQRhrEKgFIhUQDQ0DIAZBAEgNAiABKAK0AiAGQQN0aiAVNwMAIAQhAgwBCwsCf0EAIQIjAEGQAWsiDCQAIAwgASgCgAIiEzYCUCAMIAEoAoQCIgM2AlQgACAMQfgAahCRAiABQYACaiESA38gASgC9AEgAkwEf0EAIQdBAAVBACEEIAEoAsACIgdBACAHQQBKGyEIIAEoAvwBIAJBBHRqIQUCQCAMQfgAagJ/A0AgBCAIRwRAIAEoAsgCIARBA3RqIgYoAgQiByAFKAIMRgRAIAEoAiRBAkcNBCAGLQAAQQhxRQ0EIAxB+ABqIgRBMBAQIAQgACAFKAIMEBkQHkEBDAMLIAdBfnFB0gBGDQMgBEEBaiEEDAELCyAMQfgAaiIEQT8QECAEIAAgBSgCDBAZEB4gBS0ABEEGdCIEQYB/cSAEQcAAciAFKAIAQQBIGwtB/wFxEBALIAJBAWohAgwBCwshAgNAAkACQAJAAkACQAJAAkACfwJAAkAgAyAHIgRKBEAgBCAEIBNqIhAtAAAiBkECdEGwmgFqLQAAIhFqIQcCQAJAAkACQAJAAkACQAJAAkAgBkGxAWsOEBQFBgQBAQEBAgEBAwMDFAgACyAGQRFrIgRBH0sNDkEBIAR0QYCA0Ix8cQ0PIARFDQYgBEEFRw0OIAxBfzYCGCAMQsn6gIDgATcDECAMQdAAaiAHIAxBEGoQLEUNESAMQfgAaiAMLQBgEBAgDCgCWCEHIAwoAlwiBEF/RiACIARGcg0TIAEgASgC3AJBAWo2AtwCIAxB+ABqIgJBwAEQECACIAQQHiAEIQIMEwsgACABIBAoAAEiBCAQLwAFIAYgDEH4AGpBAEEAIAcQ4wQhByAAIAQQEwwSCyAQKAABIQggEC8ACSEEIAEoAqQCIBAoAAVBFGxqIgYgBigCAEEBazYCACAAIAEgCCAEQbkBIAxB+ABqIBMgBiAHEOMEIQcgACAIEBMMEQsCfyAQKAABIQggEC8ABSEKIAxB+ABqIQsjAEEQayINJABBfyEOAkACQAJAIAAgDUEIaiANQQxqIAEgCCAKEN0EIg9BAEgNACANKAIMIgVFDQECQAJAAkACQCAGQbwBaw4DAAABAgsCQAJAAkAgBUEFaw4FAAECBQIECyAGQb0BRgRAIAtBERAQCyALIA0oAgggDxCxAiALQcQAEBBBACEODAULIAsgDSgCCCAPELECIAtBLBAQQQAhDiAGQb0BRg0EIAtBDxAQDAQLIAZBvQFGBEAgC0EREBALIAsgDSgCCCAPELECIAtBLBAQIAtBJBAQQQAhDiALQQAQMQwDCwJAAkACQCAFQQVrDgUAAQECAgMLIAsgDSgCCCAPELECIAtBxQAQEEEAIQ4MBAsgC0EwEBAgCyAAIAgQGRAeQQAhDiALQQAQEAwDCyAAIAgQ6QQiBUUNAiAAIA1BCGogDUEMaiABIAUgChDdBCEGIAAgBRATIAZBAEgNAiANKAIMQQhHDQQgCyANKAIIIAYQsQIgC0EbEBAgC0EeEBAgC0EsEBAgC0EdEBAgC0EkEBAgC0EBEDFBACEODAILEAEACyALQTAQECALIAAgCBAZEB5BACEOIAtBABAQCyANQRBqJAAgDgwCC0GF6wBBvuMAQZvrAUGo3AAQAAALQYDpAEG+4wBB2OsBQajcABAAAAtBAEgEQANAIAMgBEwNCCAMQfgAaiAEIBNqIgIgAi0AAEECdEGwmgFqLQAAIgIQigEaIAIgBGohBAwACwALIAAgCBATDBALIBAoAAEiBEEASA0IIAQgASgCrAJODQggASgCpAIgBEEUbGogDCgCfCARajYCCAwNCyAQLwABIgogASgC8AFGBEACQCAMQfgAaiEJQQAhBkEAIQ4DQAJAIAEoAogBIAZMBEBBACEGA0AgBiABKAJ8Tg0CAkAgASgCdCAGQQR0aiIEKAIEDQAgBC0AD0HAAHENACAJQQMQECAJIAQoAgxBAXRBCHUQHiAJQdkAEBAgCSAGQf//A3EQMQsgBkEBaiEGDAALAAsgASgCgAEgBkEEdGoiBC0AD0HAAHFFBEAgCUEDEBAgCSAEKAIMQQF0QQh1EB4gCUHcABAQIAkgBkH//wNxEDELIAZBAWohBgwBCwtBfyENIAEoApQDBEAgAUF/ENADIQ0gCUEIEBAgCUHpABAQIAkgDRAeIAEgDUEBEHQaIAEgASgC0AJBAWo2AtACCwNAAkACQCABKAL0ASAOSgRAQQAhBiABKALAAiIEQQAgBEEAShshBCABKAL8ASAOQQR0aiILLQAEIgVBAXEhDwJ/A0AgBCAGRwRAIAEoAsgCIAZBA3RqKAIEIgggCygCDEYEQEEAIQ8gBiEEQQIMAwsgCEF+cUHSAEYEQCAJQd4AEBAgCSAGQf//A3EQMUEBIQ8gBiEEQQEMAwUgBkEBaiEGDAILAAsLIAEoAiRBAEchCEEAIAsoAgBBAE4gBUECcSIGGw0CIAlBPhAQIAkgACALKAIMEBkQHiAJQYB/QYJ/IAVBBHEbQQAgBhsgCHJBgwFxEBBBAAshCEEAIAsoAgAiBkEASCAPGw0CAkAgBkEATgRAIAlBAxAQIAkgCygCABAeIAsoAgxB/ABHDQEgCUHNABAQIABBFhAZGiAJQRYQHgwBCyAJQQYQEAsCQAJAAkAgCEEBaw4CAQACCyAJQd8AEBAgCSAEQf//A3EQMQwECyAJQcwAEBAgCSAAIAsoAgwQGRAeIAlBDhAQDAMLIAlBORAQIAkgACALKAIMEBkQHgwCCyABKAKUAwRAIAlBKRAQIAlBtAEQECAJIA0QHiABKAKkAiANQRRsaiAJKAIENgIICyAAIAEoAvwBEBogAUIANwL0ASABQQA2AvwBDAMLIAlBAxAQIAkgCygCABAeIAlBwAAQECAJIAAgCygCDBAZEB4gCSAIEBALIAAgCygCDBATIA5BAWohDgwACwALCyABKALMASAKQQN0akEEaiEEA0AgBCgCACIFQQBIDQ8gASgCdCAFQQR0aiIIKAIEIApHDQ8gASgCnAEgBUcEQCAMQfgAaiIGIAgoAgxBA3ZBD3FBAWtBAU0EfyAMQfgAaiIEQQMQECAEIAgoAgxBAXRBCHUQHkHZAAVB4QALEBAgBiAFQf//A3EQMQsgCEEIaiEEDAALAAsgASgCzAEgEC8AASIGQQN0akEEaiEEA0AgBCgCACIFQQBIDQ4gASgCdCAFQQR0aiIIKAIEIAZHDQ4gCC0ADEEEcQRAIAxB+ABqIgRB6AAQECAEIAVB//8DcRAxCyAIQQhqIQQMAAsACyAMQX82AkggDELp1IGA4AE3A0AgDEHQAGogByAMQUBrECxFDQogDCgCaCIFQQBIDQYgBSABKAKsAk4NBiAMKAJcIQYgDCgCWCEIIAwoAmAhCSAFIQQDQEEAIQsgASIKKAKAAiEOIAEoAqQCIQ8DQAJAIAtBFEYNACAPIARBFGxqKAIEIQoDQCAKIA5qIgQtAAAiDUG0AUYgDUHAAUZyBEAgCkEFaiEKDAEFIA1B6wBHDQIgC0EBaiELIAQoAAEhBAwDCwALAAsLIAohBCAMQo6AgIBwNwM4IAwgCTYCNCAMQRE2AjAgDEHQAGogBCAMQTBqECwEQCAMKAJoIQQMAQsLIAxBfzYCJCAMIAk2AiAgDEHQAGogBCAMQSBqECxFDQogASABKALQAkEBajYC0AIgASAFQX8QdBogASAMKAJoIgdBARB0GiAMQfgAaiIEIAlB/wFxEBAgBCAHEB4gCCEHIAZBf0YgAiAGRnINDCABIAEoAtwCQQFqNgLcAiAMQfgAaiICQcABEBAgAiAGEB4gBiECDAwLIBAoAAEhAiABIAEoAtwCQQFqNgLcAgwJCyASEJcBIBIgDCkDiAE3AhAgEiAMKQOAATcCCCASIAwpA3g3AgBBACASKAIMRQ0CGiAAEMkBDAELIBIQlwEgEiAMKQOIATcCECASIAwpA4ABNwIIIBIgDCkDeDcCAAtBfwshAiAMQZABaiQAIAIMCAtB3xZBvuMAQYzyAUHSJRAAAAtBhBdBvuMAQd3yAUHSJRAAAAsCQAJAAkAgBkHpAGsOBgQEAgQBAwALIAZBMUYEQCAQLwABIQYgASAQLwADIgQQ4gQgDEH4AGoiCEExEBAgCCAGEDEgCCABKALMASAEQQN0ai8BBEEBakH//wNxEDEMBwsgBkEyRwRAIAZBzQBHDQUgECgAAUUNBwwFCyABIBAvAAEiBhDiBCAMQfgAaiIEQTIQECAEIAEoAswBIAZBA3RqLwEEQQFqQf//A3EQMQwGCyABIAEoAtACQQFqNgLQAiAQKAABIgRBAEgNBCAEIAEoAqwCTg0EIAEoAqQCIARBFGxqIgYoAgQhBCAMQu6AgIBwNwMAIAxB0ABqIAQgDBAsRQ0DIAYgBigCAEEBazYCAAwFCyABIAEoAtACQQFqNgLQAgsgDEF/NgJMIAxB+ABqIBAgERCKARogASATIAMgByAMQcwAahCyAiIHIANODQMgDCgCTCIEQQBIIAIgBEZyDQMgASABKALcAkEBajYC3AIgDEH4AGoiAkHAARAQIAIgBBAeIAQhAgwDCyABIAEoAtACQQFqNgLQAgsgDEH4AGogECAREIoBGgwBCwtB3xZBvuMAQbzxAUHSJRAAAAsNAQJ/IwBB0AVrIgMkACABKAKkAiEPIAMgASgC8AI2AsgFIAMgASgCgAIiCzYCiAUgAyABKAKEAiIONgKMBSAAIANBsAVqEJECAkACfwJAIAEoAtACIgIEQCABIAEoAgAgAkEEdBBsIgI2AswCIAJFDQELAkAgASgC3AIiAkUNACABLQBuQQJxDQAgASABKAIAIAJBA3QQbCICNgLYAiACRQ0BIAFBADYC6AIgASABKALwAjYC5AILIAEoArQBQQBOBEAgA0GwBWoiAkEMEBAgAkEEEBAgAkHZACABKAK0ARBoCyABKAKwAUEATgRAIANBsAVqIgJBDBAQIAJBAhAQIAJB2QAgASgCsAEQaAsgASgCrAFBAE4EQCADQbAFaiICQQwQECACQQMQECACQdkAIAEoAqwBEGgLAkAgASgCqAFBAEgNACABKAJgBEAgA0GwBWoiAkHhABAQIAIgAS8BqAEQMQwBCyADQbAFaiICQQgQECACQdkAIAEoAqgBEGgLIAEoApgBQQBOBEBBACECIAEtAG5BAXFFBEAgASgCOEEARyECCyADQbAFaiIEQQwQECAEIAIQECABKAKcASICQQBOBEAgA0GwBWpB2gAgAhBoCyADQbAFakHZACABKAKYARBoCyABKAKgAUEATgRAIANBsAVqIgJBDBAQIAJBAhAQIAJB2QAgASgCoAEQaAsgASgCkAFBAE4EQCADQbAFaiICQQwQECACQQUQECACQdkAIAEoApABEGgLIAEoApQBQQBOBEAgA0GwBWoiAkEMEBAgAkEFEBAgAkHZACABKAKUARBoCyABQYACaiENQQAhAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIgDk4EQEEAIQIgASgCrAIiBEEAIARBAEobIQcDQCACIAdGDQIgAkEUbCEEIAJBAWohAiAEIA9qKAIQRQ0AC0Gs6gBBvuMAQf36AUHrIxAAAAsgAiACIAtqIgktAAAiBUECdEGwmgFqLQAAIgpqIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVB2ABrDiAQEhoREhoREhoaGhoaGhoaGgQEAQMCGhoMDAUFBQUFBQALAkAgBUEBaw4VCQoKCxoNBxoICBoaGgYaGg8aGhoOAAsgBUEiayIGQR9LDRhBASAGdCIHQcDhAXENEiAHQQVxRQRAIAZBH0cNGSAJKAABQTBHDRogAEEwEBMgASADKAK0BSADKALIBRA0IANBsAVqQecBEBAgBCECDCMLIAkvAAEhAiADQqiAgIBwNwMAIANBiAVqIAQgAxAsBEACQCADKAKUBSIEQQBIBEAgAygCyAUhBAwBCyADIAQ2AsgFCyABIAMoArQFIAQQNCADQbAFaiAFQQFqIAIQaCABIAsgDiADKAKQBSADQcgFahCyAiECDCMLIAEgAygCtAUgAygCyAUQNCADQbAFaiAFIAIQaCAEIQIMIgsgCSgAASEFIAQhBwwWC0HtACEFIAkoAAEhBgwUC0HsACEFIAkoAAEhBgwTCyADQYgFaiAEIAEgCSgAASADQcwFakEAEMkDIgYQyAMEQCABIAZBfxB0GiADQbAFakEOEBAgBCECDB8LIANC64CAgHA3AxAgA0GIBWogBCADQRBqECxFDRIgAygClAUhCCADQYgFaiADKAKQBSIHIAYQyANFDRIgCEEATgRAIAMgCDYCyAULIAEgBkF/EHQaIAVBA3MhBSADKAKgBSEGDBwLIAkoAAEhBiAJLQAJIQcgASAJKAAFIANBzAVqQQAQyQMiCkEASA0PIAogASgCrAJODQ8gASADKAK0BSADKALIBRA0IAEgASgC1AIiAkEBajYC1AIgASgCzAIgAkEEdGoiCEEENgIEIAggBTYCACADKAK0BSECIAggCjYCDCAIIAJBBWo2AgggA0GwBWoiAiAFEBAgAiAGEB4gAiAPIApBFGxqIgIoAgwgAygCtAVrEB4gAigCDEF/RgRAIAAgAiADKAK0BUEEa0EEEO4CRQ0dCyADQbAFaiAHEBAgBCECDB0LIANCqYCAgHA3AyAgA0GIBWogBCADQSBqECxFDRMgBCECIAMoApQFIgRBAEgNHCADIAQ2AsgFDBwLIANCq4GAgHA3A1AgA0GIBWogBCADQdAAahAsBEACQCADKAKUBSICQQBIBEAgAygCyAUhAgwBCyADIAI2AsgFCyABIAMoArQFIAIQNCADQbAFakHxARAQDBgLIANBfzYCSCADQqyBgICQzRo3A0AgA0GIBWogBCADQUBrECxFDQACQCADKAKUBSIFQQBIBEAgAygCyAUhBQwBCyADIAU2AsgFCyABIAMoArQFIAUQNCADQbAFakHxARAQIAMoApgFQQNzIQUMGAsgA0Lp1IGAcDcDMCADQYgFaiAEIANBMGoQLEUNESAFQQpGIQgMDQsCQCAJKAABIgdB/////wdxRQ0AIANCjIGAgHA3A5ABIANBiAVqIAQgA0GQAWoQLEUNACADKAKUBSICQQBOBEAgAyACNgLIBQsgA0KOgICAcDcDgAEgA0GIBWogAygCkAUgA0GAAWoQLARAIAMoApQFIgJBAEgNFyADIAI2AsgFDBcLIAEgAygCtAUgAygCyAUQNCADQbAFakEAIAdrEMcDDBYLIANCjoCAgHA3A3AgA0GIBWogBCADQfAAahAsBEAgAygClAUiAkEASA0WIAMgAjYCyAUMFgsgA0Lp1IGAcDcDYCADQYgFaiAEIANB4ABqECwEQCAHQQBHIQgMDQsgASADKAK0BSADKALIBRA0IANBsAVqIAcQxwMgBCECDBkLIAkoAAEiB0H/AUoNDyABIAMoArQFIAMoAsgFEDQgA0GwBWoiAiAFQcUAa0H/AXEQECACIAdB/wFxEBAgBCECDBgLIAkoAAEhAiADQo6AgIBwNwOgASADQYgFaiAEIANBoAFqECwEQCAAIAIQEyADKAKUBSICQQBIDRQgAyACNgLIBQwUCyACQS9HDQ4gAEEvEBMgASADKAK0BSADKALIBRA0IANBsAVqQb8BEBAgBCECDBcLIANCyYCAgHA3A9gBIANC2Lb5gnA3A9ABIANBiAVqIAQiAiADQdABahAsDRYgA0F/NgLIASADQoGEkICQCTcDwAEgA0GIBWogAiADQcABahAsDRYgA0F/NgK4ASADQoaOqMiQCTcDsAEgA0GIBWogBCADQbABahAsDRYMDQsgA0KOgICAcDcDoAIgA0GIBWogBCADQaACahAsBEAgAygClAUiAkEASA0SIAMgAjYCyAUMEgsgA0KogICAcDcDkAIgA0GIBWogBCADQZACahAsBEACQCADKAKUBSICQQBIBEAgAygCyAUhAgwBCyADIAI2AsgFCyABIAMoArQFIAIQNCADQbAFakEpEBAMEgsgA0Lp1IGAcDcDgAJBACEIIANBiAVqIAQgA0GAAmoQLA0IIANCq4GAgHA3A/ABIANBiAVqIAQgA0HwAWoQLARAAkAgAygClAUiAkEASARAIAMoAsgFIQIMAQsgAyACNgLIBQsgASADKAK0BSACEDQgA0GwBWpB8AEQEAwSCyADQX82AugBIANCrIGAgJDNGjcD4AEgA0GIBWogBCADQeABahAsRQ0MAkAgAygClAUiBUEASARAIAMoAsgFIQUMAQsgAyAFNgLIBQsgASADKAK0BSAFEDQgA0GwBWpB8AEQECAD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ACAKIAIgCmoiBDYCFCAKIAEoAoQCIgI2AhggBCABKAKAAiACECUaIAAgASgCgAIQGiABQQA2AoACIAogASgCcDYCHCABKAJ8IgcgASgCiAEiBGpBAEwNBiABLQBuQQJxRQ0EIAEoAkQNBEEAIQIDQCACIAdOBEBBACECA0AgASgCiAEgAkwEQEEAIQIDQCACIAEoAsACTg0KIAAgAkEDdCIEIAEoAsgCaigCBBATIAEoAsgCIARqQQA2AgQgAkEBaiECDAALAAUgACABKAKAASACQQR0aigCABATIAJBAWohAgwBCwALAAUgACABKAJ0IAJBBHRqKAIAEBMgAkEBaiECIAEoAnwhBwwBCwALAAtB1fMAQb7jAEGD/gFBizYQAAALBSABKAJ0IAJBBHRqIgQgASgCzAEgBCgCBEEDdGoiBCgCBDYCCCAEIAI2AgQgAkEBaiECDAELCyAAIAEQjQNCgICAgOAADAMLIAogBSAKaiICNgIgIAIgASgCgAEgBEEEdBAlGiAKKAIgIAEoAogBQQR0aiABKAJ0IAEoAnxBBHQQJRoLIAogASgCfDsBKiAKIAEoAogBOwEoIAogASgCjAE7ASwgACABKAKAARAaIAAgASgCdBAaCyAKIAEoArgCIgQ2AjggBARAIAogCCAKaiICNgI0IAIgASgCtAIgBEEDdBAlGgsgACABKAK0AhAaIAFBADYCtAIgCiAUKAIMOwEuAkAgAS0AbkECcQRAIAAgASgC7AIQEyABQfQCahCXAQwBCyAKIAovABFBgAhyOwARIAogASgC7AI2AkAgCiABKALwAjYCRCAKIAAgASgC9AIgASgC+AIQmgIiAjYCUCACRQRAIAogASgC9AI2AlALIAogASgC+AI2AkwgCiABKAKMAzYCVCAKIAEoApADNgJICyABKALMASICIAFB0AFqRwRAIAAgAhAaCyAKIAEoAsACIgQ2AjwgBARAIAogBiAKaiICNgIkIAIgASgCyAIgBEEDdBAlGgsgACABKALIAhAaIAFBADYCyAIgCiAKLwARQX5xIAEvATRBAXFyIgI7ABEgCiABLwE4QQF0QQJxIAJBfXFyIgI7ABEgCiABLQBuOgAQIAogAS8BYEECdEEEcSACQXtxciICOwARIAogAkFPcSABLwFsQQR0QTBxciICOwARIAogASgCtAFBAEgE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DAELCyAGQQEgA2tBA3RqIgNBBGohByADKAIIIQQDQCAEIAdGDQEgBCgCBCEDIAQQRiAAKAIQIAQQvAIgAyEEDAALAAsgBUEwaiQAC8ECAgN+An8jAEEQayICJABCgICAgDAhBQJAAkAgACACQQhqIAAgARArIgEQQQ0AAkAgAikDCCIHQgBXBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEIECDAILAkAgBARAIAAgAUIAEGQiBRANDQYgACABQgBCASAGQQEQggNFDQEMBgsgACABIAYQZCIFEA0NBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAXIQYLIAAgAUEwIAYQSEEATg0BCyAAIAUQDEKAgICA4AAhBQsgACABEAwgAkEQaiQAIAULEAAgACADKQMAQREgBBCBAwuuAgIFfgF/IwBBEGsiCiQAAn4CQCAAIApBCGogACABECsiBRBBDQAgCikDCCIBIAKsIgh8IgZCgICAgICAgBBZBEAgAEGqwwBBABAWDAELAkAgBEUgAkEATHJFBEAgACAFIAhCACABQX8QggMNAgwBCyABIQcLIAJBACACQQBKG60hCEIAIQEDQCABIAhSBEAgASAHfCEJIAGnIQIgAUIBfCEBIAAgBSAJIAMgAkEDdGopAwAQDxCRAUEATg0BDAILCyAAIAVBMCAGQoCAgIAIfCIHQv////8PWAR+IAZC/////w+DBSAGuRAXCxBIQQBIDQAgACAFEAwgBkL/////D4MgB0L/////D1gNARogBrkQFwwBCyAAIAUQDEKAgICA4AALIQEgCkEQaiQAIAELPAAgAUEAQdAAEEsiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQ0EBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB3DQAgACABEBkPCyABQQFqIQEMAQsLEAEA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CyADKQMAEA8hBQwBCyAAEHUMAQsCQCAAIAEgBBBvIgcQDQRAIAAgBRAMDAELIAAgByAFIAYgCBDzA0UNASAAIAcQDAtCgICAgOAAIQcLIAJBEGokACAHC9IDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEHMgBCAAIAJBgfgAIAVrEKECIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB/g4S/Cw8AIAAgASACQQBBAxCCAguiDwIFfw5+IwBB0AJrIgUkACAEQv///////z+DIQogAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg9CgICAgICAwP//AFQgD0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgD0KAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAPhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAPQv///////z9YBEAgBUHAAmogASAMIAEgDCAMUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA8gCIQwgBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCiADIAogClAiBxt5IAdBBnStfKciB0EPaxBzIAYgB2pBEGshBiAFKQO4AiEKIAUpA7ACIQMLIAVBoAJqIApCgICAgICAwACEIhJCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAEHIgBUGQAmpCACAFKQOoAn1CACAEQgAQciAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABByIAVB8AFqIARCAEIAIAUpA4gCfUIAEHIgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQciAFQdABaiAEQgBCACAFKQPoAX1CABByIAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAEHIgBUGwAWogBEIAQgAgBSkDyAF9QgAQciAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABByIAVBkAFqIANCD4ZCACACQgAQciAFQfAAaiACQgBCACAFKQOoASAFKQOgASIPIAUpA5gBfCIEIA9UrXwgBEIBVq18fUIAEHIgBUGAAWpCASAEfUIAIAJCABByIAYgCSAIa2ohBgJ/IAUpA3AiEEIBhiIUIAUpA4gBIg5CAYYgBSkDgAFCP4iEfCILQufsAH0iFUIgiCICIAxCgICAgICAwACEIhZCAYYgAUI/iIQiDEIgiCIEfiIRIAFCAYYiD0IgiCIKIAsgFVatIAsgFFStIAUpA3hCAYYgEEI/iIQgDkI/iHx8fEIBfSIQQiCIIgt+fCIOIBFUrSAOIA4gEEL/////D4MiECAMQv////8PgyIUfnwiDlatfCAEIAt+fCAEIBB+IhMgCyAUfnwiESATVK1CIIYgEUIgiIR8IA4gDiARQiCGfCIOVq18IA4gDiAVQv////8PgyIVIBR+IhMgAiAKfnwiESATVK0gESARIBAgD0L+////D4MiE358IhFWrXx8Ig5WrXwgDiAEIBV+IhcgCyATfnwiBCACIBR+fCILIAogEH58IhBCIIggCyAQVq0gBCAXVK0gBCALVq18fEIghoR8IgQgDlStfCAEIBEgAiATfiICIAogFX58IgpCIIggAiAKVq1CIIaEfCICIBFUrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIAVB0ABqIAIgBCADIBIQciABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQtCACABfSEKIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhByIAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hC0IAIAx9IQogASEPIBYhDCAGQf//AGoLIgZB//8BTgRAIA1CgICAgICAwP//AIQhDUIAIQEMAQsCfiAGQQBKBEAgC0IBhiAKQj+IhCELIARC////////P4MgBq1CMIaEIQwgCkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEKECIAVBMGogDyAMIAZB8ABqEHMgBUEgaiADIBIgBSkDQCICIAUpA0giDBByIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgQgAUIBhiIBVK19IQsgBCABfQshBCAFQRBqIAMgEkIDQgAQciAFIAMgEkIFQgAQciAMIAIgAiADIAJCAYMiASAEfCIDVCALIAEgA1atfCIBIBJWIAEgElEbrXwiAlatfCIEIAIgAiAEQoCAgICAgMD//wBUIAMgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgJWrXwiBCACIARCgICAgICAwP//AFQgAyAFKQMAViABIAUpAwgiA1YgASADURtxrXwiASACVK18IA2EIQ0LIAAgATcDACAAIA03AwggBUHQAmokAAvEAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQBBACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEBBACABIAJTIAEgAlEbDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwuLDAEGfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBA3FFDQEgACgCACICIAFqIQECQCAAIAJrIgBBrL0EKAIARwRAIAJB/wFNBEAgACgCCCIEIAJBA3YiAkEDdEHAvQRqRhogACgCDCIDIARHDQJBmL0EQZi9BCgCAEF+IAJ3cTYCAAwDCyAAKAIYIQYCQCAAIAAoAgwiA0cEQCAAKAIIIgJBqL0EKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIABBFGoiAigCACIEDQAgAEEQaiICKAIAIgQNAEEAIQMMAQsDQCACIQcgBCIDQRRqIgIoAgAiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIACyAGRQ0CAkAgACgCHCIEQQJ0Qci/BGoiAigCACAARgRAIAIgAzYCACADDQFBnL0EQZy9BCgCAEF+IAR3cTYCAAwECyAGQRBBFCAGKAIQIABGG2ogAzYCACADRQ0DCyADIAY2AhggACgCECICBEAgAyACNgIQIAIgAzYCGAsgACgCFCICRQ0CIAMgAjYCFCACIAM2AhgMAgsgBSgCBCICQQNxQQNHDQFBoL0EIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIICwJAIAUoAgQiAkECcUUEQEGwvQQoAgAgBUYEQEGwvQQgADYCAEGkvQRBpL0EKAIAIAFqIgE2AgAgACABQQFyNgIEIABBrL0EKAIARw0DQaC9BEEANgIAQay9BEEANgIADwtBrL0EKAIAIAVGBEBBrL0EIAA2AgBBoL0EQaC9BCgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQECQCACQf8BTQRAIAUoAggiBCACQQN2IgJBA3RBwL0EakYaIAQgBSgCDCIDRgRAQZi9BEGYvQQoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiA0cEQCAFKAIIIgJBqL0EKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIAVBFGoiBCgCACICDQAgBUEQaiIEKAIAIgINAEEAIQMMAQsDQCAEIQcgAiIDQRRqIgQoAgAiAg0AIANBEGohBCADKAIQIgINAAsgB0EANgIACyAGRQ0AAkAgBSgCHCIEQQJ0Qci/BGoiAigCACAFRgRAIAIgAzYCACADDQFBnL0EQZy9BCgCAEF+IAR3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogAzYCACADRQ0BCyADIAY2AhggBSgCECICBEAgAyACNgIQIAIgAzYCGAsgBSgCFCICRQ0AIAMgAjYCFCACIAM2AhgLIAAgAUEBcjYCBCAAIAFqIAE2AgAgAEGsvQQoAgBHDQFBoL0EIAE2AgAPCyAFIAJBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsgAUH/AU0EQCABQQN2IgJBA3RBwL0EaiEBAn9BmL0EKAIAIgNBASACdCICcUUEQEGYvQQgAiADcjYCACABDAELIAEoAggLIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIDwtBHyECIAFB////B00EQCABQQh2IgIgAkGA/j9qQRB2QQhxIgR0IgIgAkGA4B9qQRB2QQRxIgN0IgIgAkGAgA9qQRB2QQJxIgJ0QQ92IAMgBHIgAnJrIgJBAXQgASACQRVqdkEBcXJBHGohAgsgACACNgIcIABCADcCECACQQJ0Qci/BGohBwJAAkBBnL0EKAIAIgRBASACdCIDcUUEQEGcvQQgAyAEcjYCACAHIAA2AgAgACAHNgIYDAELIAFBAEEZIAJBAXZrIAJBH0YbdCECIAcoAgAhAwNAIAMiBCgCBEF4cSABRg0CIAJBHXYhAyACQQF0IQIgBCADQQRxaiIHQRBqKAIAIgMNAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsLnAgBC38gAEUEQCABEKMCDwsgAUFATwRAQcSzBEEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEFIABBCGsiBigCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBUGAAkkNAhogBUEEaiAETQRAIAYhAiAEIAVrQfjABCgCAEEBdE0NAgtBAAwCCyAEIAZqIQcCQCAEIAVPBEAgBCAFayIDQRBJDQEgBiAJQQFxIAVyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ8QUMAQtBsL0EKAIAIAdGBEBBpL0EKAIAIARqIgQgBU0NAiAGIAlBAXEgBXJBAnI2AgQgBSAGaiIDIAQgBWsiAkEBcjYCBEGkvQQgAjYCAEGwvQQgAzYCAAwBC0GsvQQoAgAgB0YEQEGgvQQoAgAgBGoiAyAFSQ0CAkAgAyAFayICQRBPBEAgBiAJQQFxIAVyQQJyNgIEIAUgBmoiBCACQQFyNgIEIAMgBmoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAGIAlBAXEgA3JBAnI2AgQgAyAGaiICIAIoAgRBAXI2AgRBACECQQAhBAtBrL0EIAQ2AgBBoL0EIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAEaiIKIAVJDQEgCiAFayEMAkAgA0H/AU0EQCAHKAIIIgQgA0EDdiICQQN0QcC9BGpGGiAEIAcoAgwiA0YEQEGYvQRBmL0EKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBygCGCELAkAgByAHKAIMIghHBEAgBygCCCICQai9BCgCAEkaIAIgCDYCDCAIIAI2AggMAQsCQCAHQRRqIgQoAgAiAg0AIAdBEGoiBCgCACICDQBBACEIDAELA0AgBCEDIAIiCEEUaiIEKAIAIgINACAIQRBqIQQgCCgCECICDQALIANBADYCAAsgC0UNAAJAIAcoAhwiA0ECdEHIvwRqIgIoAgAgB0YEQCACIAg2AgAgCA0BQZy9BEGcvQQoAgBBfiADd3E2AgAMAgsgC0EQQRQgCygCECAHRhtqIAg2AgAgCEUNAQsgCCALNgIYIAcoAhAiAgRAIAggAjYCECACIAg2AhgLIAcoAhQiAkUNACAIIAI2AhQgAiAINgIYCyAMQQ9NBEAgBiAJQQFxIApyQQJyNgIEIAYgCmoiAiACKAIEQQFyNgIEDAELIAYgCUEBcSAFckECcjYCBCAFIAZqIgMgDEEDcjYCBCAGIApqIgIgAigCBEEBcjYCBCADIAwQ8QULIAYhAgsgAgsiAgRAIAJBCGoPCyABEKMCIgNFBEBBAA8LIAMgAEF8QXggBigCBCICQQNxGyACQXhxaiICIAEgASACSxsQJRogABDpASADC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEH0tAQoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQcSzBEEZNgIAQX8FQQELDAELIAAgAToAAEEBCwsWACAARQRAQQAPC0HEswQgADYCAEF/C8QCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgAKCwwKCwIDBAUMCwwMCgsHCAkLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LAAsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsACyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEDAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALawEEfyAAKAIALAAAEEVFBEBBAA8LA0AgACgCACEDQX8hASACQcyZs+YATQRAQX8gAywAAEEwayIEIAJBCmwiAWogBEH/////ByABa0obIQELIAAgA0EBajYCACABIQIgAywAARBFDQALIAIL8RICEX8BfiMAQdAAayIHJAAgByABNgJMIAdBN2ohFiAHQThqIRJBACEBAkACQAJAAkADQCABQf////8HIA1rSg0BIAEgDWohDSAHKAJMIgwhAQJAAkACQCAMLQAAIgsEQANAAkACQCALQf8BcSIIRQRAIAEhCwwBCyAIQSVHDQEgASELA0AgAS0AAUElRw0BIAcgAUECaiIINgJMIAtBAWohCyABLQACIQogCCEBIApBJUYNAAsLIAsgDGsiAUH/////ByANayIXSg0HIAAEQCAAIAwgARBnCyABDQZBfyEQQQEhCCAH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AhDvBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRD/AUEATARAIAEgCiADIAkQ/wEEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gAyAEVq19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiAJfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQQFrIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEDMgBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQMyADQf3/AiADQf3/AkgbQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQMyAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARB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AykDCBA4IgJFDQAgACABIAIgBhAPIARBABCIBCEDIAAgAhATIANBAEgNACADQQBHrUKAgICAEIQhBQsgBQsqACADKQMAIgFC/////29YBEAgABApQoCAgIDgAA8LIAAgAUEDQQAQgQMLYwEBfiADKQMAIgRC/////29YBEAgABApQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDgiAkUNACAAIAQgAhB6IQMgACACEBMgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC2MBAn4CQAJAIAMpAwAiAUL/////b1gEQCAAECkMAQsgAykDCCEFIAEhBCACQQNOBEAgAykDECEECyAAIAUQOCICDQELQoCAgIDgAA8LIAAgASACIARBABAUIQEgACACEBMgAQtmAQF+IAMpAwAiBEL/////b1gEQCAAEClCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOCICRQ0AIAAgBCACQQAQ3gEhAyAAIAIQEyADQQBIDQAgA0EAR61CgICAgBCEIQELIAELigECAX8CfiMAQRBrIgQkACADKQMIIQUgAykDACIGIQECQAJAAkACQCACQQNIDQAgAykDECIBELUBDQAgAEHfKUEAEBYMAQsgACAEQQxqIAUQiwQiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhCOAyEBIAAgAiADEJgDCyAEQRBqJAAgAQscACAAIAMpAwBBACACQQFrEEogA0EIakECEJoDC0MAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEMaiADKQMAEMcBDQAaQiAgAigCDCIARQ0AGiAAZ60LIQEgAkEQaiQAIAELUAAjAEEQayICJABCgICAgOAAIQECQCAAIAJBDGogAykDABCTAg0AIAAgAkEIaiADKQMIEJMCDQAgAigCCCACKAIMbK0hAQsgAkEQaiQAIAELBgAgALa7C1AAIAAgACkD0AEiAUIMiCABhSIBQhmGIAGFIgFCG4ggAYUiATcD0AEgAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S/RAAAAAAAAPC/oBAXC/UDAwN8BX8DfiMAQRBrIggkACAIQgA3AwgCQAJAIAJBAEwNAEKAgICA4AAhASAAIAhBCGogAykDABBHDQFBASEJIAgrAwghBCACQQFHBEADQCACIAlGDQIgACAIIAMgCUEDdGopAwAQRw0DIAlBAWohCSAIKwMAIQUjAEEgayIHJAAgBL1C////////////AIMiDSAFvUL///////////8AgyIMIAwgDVYbIg6/IQQCQCAOQjSIpyIKQf8PRg0AIA0gDCAMIA1UGyIMvyEFAkAgDlANACAMQjSIpyILQf8PRg0AIAsgCmtBwQBOBEAgBSAEoCEEDAILAnwgC0H+C08EQCAERAAAAAAAADAUoiEEIAVEAAAAAAAAMBSiIQVEAAAAAAAAsGsMAQtEAAAAAAAA8D8gCkG8BEsNABogBEQAAAAAAACwa6IhBCAFRAAAAAAAALBroiEFRAAAAAAAADAUCyEGIAdBGGogB0EQaiAFEIQGIAdBCGogByAEEIQGIAYgBysDACAHKwMQoCAHKwMIoCAHKwMYoJ+iIQQMAQsgBSEECyAHQSBqJAAMAAsACyAEmSEECyAEvQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBCyAEEBchAQsgCEEQaiQAIAELTgAgACAARAAAAAAAAPC/RAAAAAAAAPA/IABEAAAAAAAAAABjGyAAvUL///////////8Ag0KAgICAgICA+P8AVhsgAEQAAAAAAAAAAGEbC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvdBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAXDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQtAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBSAFIAalIAa9Qv///////////wCDQoCAgICAgID4/wBWGyAGIAW9Qv///////////wCDQoCAgICAgID4/wBYGyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFIAUgBqQgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsLIAW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAFEBcLIQEgCEEQaiQAIAEL0AEBAn8jAEEQayICJAACfiAAIAFBJhBqIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARASRQRAIAIgAygCDCIFNgIMIAUgAaciBigCBEH/////B3FJDQEgACABEAwgA0KAgICAMDcDAAsgBEEBNgIAQoCAgIAwDAELIAYgAkEMahDbASEHIAMgAigCDDYCDCAEQQA2AgAgB0H//wNNBEAgACAHQf//A3EQpgMMAQsgACAGIAVBAXRqQRBqQQIQnAQLIQEgAkEQaiQAIAELxwICAn8CfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgARBjIgEQDQ0AIAAgAkEIaiIFQQcQQhogBUE8ED4aIAUgBEEDdCIFQfDKAWooAgAiBhCOARpBnj0gBHZBAXFFBEAgAkEIaiIEQSAQPhogBCAFQfTKAWooAgAQjgEaIARByv4AEI4BGiAAIAMpAwAQYyIIEA0EQCAAIAEQDCACQQhqEEQMAgsgCKchA0EAIQQDQCAEIAMoAgRB/////wdxT0UEQAJAIAMgBBBNIgVBIkYEQCACQQhqQfTvABCOARoMAQsgAkEIaiAFEJYBGgsgBEEBaiEEDAELCyAAIAgQDCACQQhqQSIQPhoLIAJBCGoiAEE+ED4aIAAgARCPARogAEH29QAQjgEaIAAgBhCOARogAkEIakE+ED4aIAAQOSEHCyACQSBqJAAgBwu7BAEIfyMAQTBrIgIkAAJAIAAgARBjIgEQ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IAQgCSkDCBBwQQBIDQcLIARCAXwhBCABQgF8IQEMAAsACyAEQv7///////8PVQ0DIAAgBSAEIAYQDxBwQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBUEwIARCgICAgAh8Qv////8PWAR+IARC/////w+DBSAEuRAXCxBIQQBIDQEMAgsgAEGqwwBBABAWCyAAIAUQDEKAgICA4AAhBQsgACAIEAwgCUEQaiQAIAULLQEBfkKAgICAMCECAkAgARCoAyIARQ0AIAAtABJBBHFFDQAgADUCRCECCyACCzMCAX4Bf0KAgICAMCECAkAgARCoAyIDRQ0AIAMtABJBBHFFDQAgACADKAJAEDIhAgsgAgsoAEKAgICA4AAgACADKQMAIAEQ2QUiAEEAR61CgICAgBCEIABBAEgbC6sBAgF+An9CgICAgOAAIQQgACABEGkEfkKAgICA4AAFQeb+ACECAkAgAaciAy8BBhD4AUUNAAJAIAMoAiAiAy8AESIFQYAIcUUNACADKAJUIgZFDQAgACAGIAMoAkgQ/gEPCyAFQQR2QQNxQQFrIgNBAksNACADQQJ0QaDdAWooAgAhAgsgACACIAAgAUE2IAFBABAUIgEQEgR+IABBLxAyBSABC0GeCBC/AQsLhwQDA34EfwN8AkAgACABEGkNACAAIAApAzBBDhBTIgUQDQ0AIAWnIgkgARC1AUEEdEEQcSAJLQAFQe8BcXI6AAUCQCAAQQAgAkEBaxBKIgJBA3RBGGoQLyIHRQ0AIAcgARAPIgE3AwAgAykDABAPIQQgByACNgIQIAcgBDcDCCACQQAgAkEAShshCgNAIAggCkcEQCAHIAhBA3RqIAMgCEEBaiIIQQN0aikDABAPNwMYDAELCyAJIAc2AiACfyABQv////9vWARAIAAQKUF/DAELIABBACABp0EwEE8LIgNBAEgNAAJAIANFDQAgACABQTAgAUEAEBQiBBANDQEgBEL/////D1gEQCAEpyIDIAJrQQAgAiADSButIQYMAQsgBBBWQQdGBEACQCAEEEkiDL1C////////////AINCgICAgICAgPj/AFYNACAMnSIMIAK3Ig1lDQAgDCANoSELCyALvQJ/IAuZRAAAAAAAAOBBYwRAIAuqDAELQYCAgIB4CyICt71RBEAgAq0hBgwCCyALEBchBgwBCyAA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EIQhAQsgACAGIAcQZgsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKyIEEA0NACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQKA0AIAEQEg0AIAAgARArIgEQDQ0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQDAsgAkEBaiECDAALAAsgACAEEAwgACABEAxCgICAgOAAIQQLIAQLGAAgACADKQMAIAMpAwgQWq1CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECsiBRANRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkgENACAAEDwiARANDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQYCIGEA0NAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2QQhBCAAIAYQDCAEEA0NAiAEEBJFBEAgACABIAkoAgQgBEGHgAEQG0EASA0DCyADQQFqIQMMAQsLIAAgByAIEGYgAQwBCyAAIAIoAhwgAigCGBBmIAAgBRAMIAEhBUKAgICA4AALIQQgACAFEAwLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEClCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEHdygBBABAWQoCAgIDgAA8LIAEQDwsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABApDAELIAAgARCiASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEIEDCxAAIAAgAykDAEEBQQAQgQMLLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENwEBH5CgICAgOAABSAEEA8LC30BAn4gAykDACIBQv////9vWARAIAAQKUKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOCICRQ0AIAAgASACIAYgBEVBDnQQ2gQhAyAAIAIQEyADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDyEFCyAFCycAIAAgAykDACIB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QRBqJAAgAAtGAQJ+IAIgACgCABAyIQNBACEAIAIgASgCABAyIQQCQCADEA0NACAEEA0NACADpyAEpxCVAiEACyACIAMQDCACIAQQDCAAC2sBAX4CQAJAAkACQAJAIAMtAAUiAQ4EAwICAAELIAAgAygCCBD2BA8LIAFBCEYNAgsQAQALIAAgAygCDCADKAIAIAMtAAggAy0ACSADLgEGEMsBDwsgACAAEDwiBCADKAIIIAMoAgwQJiAECwkAIAAgAxCJAws8AQF+IAAQPCIEEA1FBEAgACAEQTwgAa1CgICAgHCEEA9BAxAbQQBOBEAgBA8LIAAgBBAMC0KAgICA4AALXwEBfwJAIAFFBEAgAkUNASAAIAIQpQUPCyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwBCyAAKAIIIAAoAgQgAmpPBH8gASACEPIFBUEACw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEO8DCwscAQF/IAFBKBBAIgIEQCAAIAIQ7QMgACACECELCyUBAX8gAacoAiAiAwRAIAAgAykDACACECMgACADKQMIIAIQIwsLJwEBfyABpygCICICBEAgACACKQMAECcgACACKQMIECcgACACECELCx4BAX8gAacoAiAiAgRAIAAgAikDABAnIAAgAhAhCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDdBUUNACACKAIMIgNFDQAgACADEPEDIAIpAwAhAQsgACABECcgACACECELC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECMLIAAgAykDGCACECMgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAgRAIAJBBGohBSACKAIIIQMDQCADIAVHBEAgAygCBCEGIANBEGshBCADQQxrKAIARQRAAkAgAigCAARAIAQQpgUMAQsgACAEKQMgECcLIAAgBCkDKBAnCyAAIAQQISAGIQMMAQsLIAAgAigCEBAhIAAgAhAhCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIwsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN0FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAnIAAgAhAhCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACECELCykBAX8gACABpyICNQIkQoCAgICQf4QQJyAAIAI1AiBCgICAgJB/hBAnCxEAIAAgAacoAiApAwAgAhAjCxkBAX8gACABpygCICICKQMAECcgACACECELOgECfwJAIAFBDxBAIgRFDQADQCADIAQtAAVPDQEgACAEIANBA3RqKQMIIAIQIyADQQFqIQMMAAsACws8AQJ/IAFBDxBAIgMEQANAIAIgAy0ABU9FBEAgACADIAJBA3RqKQMIECcgAkEBaiECDAELCyAAIAMQIQsLSQECfyAAIAGnKAIgIgQpAwAgAhAjIAAgBCkDCCACECMDQCADIAQoAhBORQRAIAAgBCADQQN0aikDGCACECMgA0EBaiEDDAELCwtJAQJ/IAAgAacoAiAiAikDABAnIAAgAikDCBAnA0AgAyACKAIQTkUEQCAAIAIgA0EDdGopAxgQJyADQQFqIQMMAQsLIAAgAhAhC44BAQR/IAGnIgMoAiQhBSADKAIgIQQgAygCKCIDBEAgACADrUKAgICAcIQgAhAjCyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NAQJAIAUgA0ECdGooAgAiBkUNACAGLQAFQQFxRQ0AIAAgBiACEQMACyADQQFqIQMMAAsACyAAIAStQoCAgIBghCACECMLC3MBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQJwsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ+gEgAkEBaiECDAELCyAAIAQQIQsgACADrUKAgICAYIQQJwsLEgAgAacoAiAiAARAIAAQrgMLCw4AIAAgAacpAyAgAhAjCxkAIAAgAaciACkDIBAnIABCgICAgDA3AyALNQECfyABpyEEA0AgAyAEKAIoT0UEQCAAIAQoAiQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsLPQEDfyABpyEDA0AgAygCJCEEIAIg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KQwBCyABIQgLIAAgBhAMIAAgBxAMCyAKQSBqJAAgCCEGDAELQoCAgIDgACEGIAAgCUEYaiABQdoAEIcBIgVFDQAgCSkDGCEHIAUtABBFBEAgACAHEAwgAEGpNkEAEBYMAQsgBxASBEAgACAFKQMAIAIgAyAEECQhBgwBCyAAIAMgBBCRAyIIEA1FBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAkIQYLIAAgBxAMIAAgCBAMCyAJQSBqJAAgBgsFACAAmwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICACHxCgICAgHyDvyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAuHAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAAnwgAUI0iKdB/w9xIgJB/QdNBEAgAkHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALELMDRAAAAAAAAOA/oiEACyAAmiAAIAFCAFMbC6gDAgV/AX4gAL1C////////////AINCgYCAgICAgPj/AFQgAb1C////////////AINCgICAgICAgPj/AFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAELIEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB/////wdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf////8HcSICIAVyRQRARBgtRFT7Ifk/IACmDwsCQCACQYCAwP8HRgRAIARBgIDA/wdHDQEgA0EDdEHQhARqKwMADwsgBEGAgMD/B0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCyBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RB8IQEaisDACEACyAAC7IBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkAgAUI0iKdB/w9xIgJBmQhPBEAgABDaAkTvOfr+Qi7mP6AhAAwBCyACQYAITwRAIAAgAKBEAAAAAAAA8D8gACAAokQAAAAAAADwP6CfIACgo6AQ2gIhAAwBCyACQeUHSQ0AIAAgAKIiAyADRAAAAAAAAPA/oJ9EAAAAAAAA8D+goyAAoBCzAyEACyAAmiAAIAFCAFMbC7kCAwF/A3wBfiAAvSIFQiCIp0H/////B3EiAUGAgMD/A08EQCAFpyABQYCAwP8Da3JFBEAgAEQYLURU+yH5P6JEAAAAAAAAcDigDwtEAAAAAAAAAAAgACAAoaMPCwJAIAFB/////gNNBEAgAUGAgEBqQYCAgPIDSQ0BIAAgACAAohCnAqIgAKAPC0QAAAAAAADwPyAAmaFEAAAAAAAA4D+iIgOfIQAgAxCnAiEEAnwgAUGz5rz/A08EQEQYLURU+yH5PyAAIASiIACgIgAgAKBEB1wUMyamkbygoQwBC0QYLURU+yHpPyAAvUKAgICAcIO/IgIgAqChIAAgAKAgBKJEB1wUMyamkTwgAyACIAKioSAAIAKgoyIAIACgoaGhRBgtRFT7Iek/oAsiAJogACAFQgBTGyEACyAAC3YBAX8gAL1CNIinQf8PcSIBQf8HTQRAIABEAAAAAAAA8L+gIgAgACAAoiAAIACgoJ+gELMDDwsgAUGYCE0EQCAAIACgRAAAAAAAAPC/IAAgAKJEAAAAAAAA8L+gnyAAoKOgENoCDwsgABDaAkTvOfr+Qi7mP6ALWgIBfwF+AkBBsLMEKAIABEBBtLMEKAIAIQIMAQtBsLMEENYFIgI2AgBBtLMEIAIQ4AQiAjYCAAsgAiAAIAAQQ0Gt7wAQtgUiAyABEKcDGkG0swQoAgAgAxAMCwuvpgRRAEGACAvheygpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AHN0cmluZ2lmeQBzdWJhcnJheQBlbXB0eSBhcnJheQBub24gaW50ZWdlciBpbmRleCBpbiB0eXBlZCBhcnJheQBuZWdhdGl2ZSBpbmRleCBpbiB0eXBlZCBhcnJheQBvdXQtb2YtYm91bmQgaW5kZXggaW4gdHlwZWQgYXJyYXkAY2Fubm90IGNyZWF0ZSBudW1lcmljIGluZGV4IGluIHR5cGVkIGFycmF5AGlzQXJyYXkAVHlwZWRBcnJheQBnZXREYXkAZ2V0VVRDRGF5AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgAb3V0LW9mLWJvdW5kIG51bWVyaWMgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kSW5kZXgAaW52YWxpZCBleHBvcnQgc3ludGF4AGludmFsaWQgYXNzaWdubWVudCBzeW50YXgAbWF4AFx1JTA0eABpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AGxpbmUgdGVybWluYXRvciBub3QgYWxsb3dlZCBhZnRlciB0aHJvdwBwb3cAbm93AHN0YWNrIG92ZXJmbG93AG11c3QgYmUgY2FsbGVkIHdpdGggbmV3AGlzVmlldwBEYXRhVmlldwByYXcAJXUAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGltcG9ydC5tZXRhIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb250ZXh0AEpTX0ZyZWVDb250ZXh0AEpTQ29udGV4dABqc19tYXBfaXRlcmF0b3JfbmV4dABqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdHQAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAdGVzdABhc3NpZ25tZW50IHJlc3QgcHJvcGVydHkgbXVzdCBiZSBsYXN0AHNxcnQAc29ydABjYnJ0AHRyaW1TdGFydABwYWRTdGFydAB1bmtub3duIHVuaWNvZGUgc2NyaXB0AFNjcmlwdABoeXBvdABmcmVlX3plcm9fcmVmY291bnQAc3RyX2luZGV4ID09IG51bV9rZXlzX2NvdW50ICsgc3RyX2tleXNfY291bnQAbnVtX2luZGV4ID09IG51bV9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudABsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AHZhbCA8IHMtPmNhcHR1cmVfY291bnQAdmFsMiA8IHMtPmNhcHR1cmVfY291bnQAaW52YWxpZCByZXBlYXQgY291bnQAaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGZvbnQAaW52YWxpZCBjb2RlIHBvaW50AGZyb21Db2RlUG9pbnQAaW52YWxpZCBoaW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAcGFyc2VJbnQAZHVwbGljYXRlIGRlZmF1bHQAc3BsaXQAZXhwZWN0aW5nIGhleCBkaWdpdAB0cmltUmlnaHQAcmVkdWNlUmlnaHQAdW5zaGlmdAB0cmltTGVmdABpbnZhbGlkIG9mZnNldABpbnZhbGlkIGJ5dGVPZmZzZXQAZ2V0VGltZXpvbmVPZmZzZXQAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgc2V0AGZpbmRfanVtcF90YXJnZXQAZXhwZWN0aW5nIHRhcmdldABpbnZhbGlkIGRlc3RydWN0dXJpbmcgdGFyZ2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0AFdlYWtTZXQAY29uc3RydWN0AEpTX0ZyZWVBdG9tU3RydWN0AHVzZSBzdHJpY3QAUmVmbGVjdAByZWplY3QAbm90IGFuIEFzeW5jR2VuZXJhdG9yIG9iamVjdABjYW5ub3QgY29udmVydCB0byBvYmplY3QAaW52YWxpZCBicmFuZCBvbiBvYmplY3QAb3BlcmFuZCAncHJvdG90eXBlJyBwcm9wZXJ0eSBpcyBub3QgYW4gb2JqZWN0AHJlY2VpdmVyIGlzIG5vdCBhbiBvYmplY3QAaXRlcmF0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0AG5vdCBhIERhdGUgb2JqZWN0AG5vdCBhIG9iamVjdABKU09iamVjdABwYXJzZUZsb2F0AGZsYXQAbm90aGluZyB0byByZXBlYXQAY29uY2F0AGNvZGVQb2ludEF0AGNoYXJBdABjaGFyQ29kZUF0AGtleXMAcHJveHk6IHRhcmdldCBwcm9wZXJ0eSBtdXN0IGJlIHByZXNlbnQgaW4gcHJveHkgb3duS2V5cwAgIGZhc3QgYXJyYXlzAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwBwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgYXJndW1lbnRzAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzACAgZWxlbWVudHMAaW52YWxpZCBudW1iZXIgb2YgZGlnaXRzAGJpbmFyeSBvYmplY3RzAGludmFsaWQgcHJvcGVydHkgYWNjZXNzAGpzX29wX2RlZmluZV9jbGFzcwBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAX19nZXRDbGFzcwBzZXRIb3VycwBnZXRIb3VycwBzZXRVVENIb3VycwBnZXRVVENIb3VycwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzAHRvbyBtYW55IGltYnJpY2F0ZWQgcXVhbnRpZmllcnMAdW5pY29kZV9wcm9wX29wcwBhY29zAGZvciBhd2FpdCBpcyBvbmx5IHZhbGlkIGluIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMAbmV3LnRhcmdldCBvbmx5IGFsbG93ZWQgd2l0aGluIGZ1bmN0aW9ucwBieXRlY29kZSBmdW5jdGlvbnMAQyBmdW5jdGlvbnMAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBTY3JpcHRfRXh0ZW5zaW9ucwBhdG9tcwBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMAcmVzb2x2ZV9sYWJlbHMASlNfRXZhbFRoaXMAc3RyaW5ncwBpbnZhbGlkIGRlc2NyaXB0b3IgZmxhZ3MAaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MAdmFsdWVzAHNldE1pbnV0ZXMAZ2V0TWludXRlcwBzZXRVVENNaW51dGVzAGdldFVUQ01pbnV0ZXMAdG9vIG1hbnkgY2FwdHVyZXMAICBzaGFwZXMAZ2V0T3duUHJvcGVydHlOYW1lcwBnY19mcmVlX2N5Y2xlcwBhZGRfZXZhbF92YXJpYWJsZXMAcmVzb2x2ZV92YXJpYWJsZXMAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGNvbXBhY3RfcHJvcGVydGllcwAgIHByb3BlcnRpZXMAZGVmaW5lUHJvcGVydGllcwBlbnRyaWVzAGZyb21FbnRyaWVzAHRvbyBtYW55IHJhbmdlcwBpbmNsdWRlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGlzSW50ZWdlcgBpc1NhZmVJbnRlZ2VyAGJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBjYW5ub3QgdXNlIGlkZW50aWNhbCBBcnJheUJ1ZmZlcgBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAG5vdCBhIG51bWJlcgBsaW5lTnVtYmVyAG1hbGZvcm1lZCB1bmljb2RlIGNoYXIAY2xlYXIAc2V0WWVhcgBnZXRZZWFyAHNldEZ1bGxZZWFyAGdldEZ1bGxZZWFyAHNldFVUQ0Z1bGxZZWFyAGdldFVUQ0Z1bGxZZWFyAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVuZCBvZiByZWdleHAAUmVnRXhwAHN1cABpbnZhbGlkIGdyb3VwAHBvcABjb250aW51ZSBtdXN0IGJlIGluc2lkZSBsb29wAGR1bXAAbnVtX2tleXNfY21wAHVzZSBzdHJpcABtYXAAZmxhdE1hcABXZWFrTWFwAGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAbG9nMXAAaGFzT3duAGl0ZXJhdG9yX2Nsb3NlX3JldHVybgBwcm9taXNlIHNlbGYgcmVzb2x1dGlvbgBvdXQgb2YgbWVtb3J5IGluIHJlZ2V4cCBleGVjdXRpb24AZGVzY3JpcHRpb24AcHJveHk6IGRlZmluZVByb3BlcnR5IGV4Y2VwdGlvbgBqc19hc3luY19nZW5lcmF0b3JfcmVzb2x2ZV9mdW5jdGlvbgBqc19jcmVhdGVfZnVuY3Rpb24Ac2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBjYWxsRXh0ZXJuYWxGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AaXNGcm96ZW4AbWFya19jaGlsZHJlbgAocG9zICsgbGVuKSA8PSBiY19idWZfbGVuAHVuZXhwZWN0ZWQgZWxsaXBzaXMgdG9rZW4AdGhlbgBzZXR0ZXIgaXMgZm9yYmlkZGVuAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AYXRhbgBuYW4Abm90IGEgYm9vbGVhbgBCb29sZWFuAGdjX3NjYW4AYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBKU19OZXdTeW1ib2xGcm9tQXRvbQBmcm9tAHJhbmRvbQB0cmltAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgbnVtYmVyIGxpdGVyYWwAbWFsZm9ybWVkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmcgbGl0ZXJhbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAF9fZGF0ZV9jbG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBpAHNldE1vbnRoAGdldE1vbnRoAHNldFVUQ01vbnRoAGdldFVUQ01vbnRoAGludmFsaWQga2V5d29yZDogd2l0aABzdGFydHNXaXRoAGVuZHNXaXRoAHByb3AgPT0gSlNfQVRPTV9sZW5ndGgAaW52YWxpZCBhcnJheSBsZW5ndGgAaW52YWxpZCBhcnJheSBidWZmZXIgbGVuZ3RoAGludmFsaWQgbGVuZ3RoAGludmFsaWQgYnl0ZUxlbmd0aABNYXRoAHB1c2gAYWNvc2gASlNfUmVzaXplQXRvbUhhc2gAYXNpbmgAYXRhbmgAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAbWF0Y2gAY2F0Y2gAc2VhcmNoAGZvckVhY2gAbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGJpZwByZWdleHAgbXVzdCBoYXZlIHRoZSAnZycgZmxhZwBvZgBpbmYAZGlmZiA9PSAoaW50OF90KWRpZmYAZGlmZiA9PSAoaW50MTZfdClkaWZmAGhyZWYAZ2NfZGVjcmVmAGZyZWVfdmFyX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAcmVzZXRfd2Vha19yZWYAZGVsZXRlX3dlYWtfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAGluZGV4T2YAbGFzdEluZGV4T2YAdmFsdWVPZgBzZXRQcm90b3R5cGVPZgBnZXRQcm90b3R5cGVPZgBpc1Byb3RvdHlwZU9mACUuKmYAZm9udHNpemUAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAYXRvbSA8IHJ0LT5hdG9tX3NpemUAY29tcHV0ZV9zdGFja19zaXplAG4gPCBidWZfc2l6ZQBub3JtYWxpemUAZnJlZXplAHJlc29sdmUAdG9QcmltaXRpdmUAcHV0X2x2YWx1ZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgdmFsdWUAcmVzdCBlbGVtZW50IGNhbm5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBpbnZhbGlkIHJldCB2YWx1ZQBfX0pTX0F0b21Ub1ZhbHVlAF9fcXVvdGUAaXNGaW5pdGUAZGVsZXRlAGNyZWF0ZQBzZXREYXRlAGdldERhdGUAc2V0VVRDRGF0ZQBnZXRVVENEYXRlAEludmFsaWQgRGF0ZQByZXZlcnNlAHBhcnNlAHByb3h5IHByZXZlbnRFeHRlbnNpb25zIGhhbmRsZXIgcmV0dXJuZWQgZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAc2V0X29iamVjdF9uYW1lAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVua25vd24gdW5pY29kZSBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgX19wcm90b19fIHByb3BlcnR5IG5hbWUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAZXhwZWN0aW5nIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cCBuYW1lAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBpbnZhbGlkIGxleGljYWwgdmFyaWFibGUgbmFtZQBpbnZhbGlkIG1ldGhvZCBuYW1lAGV4cGVjdGluZyBmaWVsZCBuYW1lAGludmFsaWQgZmllbGQgbmFtZQBjbGFzcyBzdGF0ZW1lbnQgcmVxdWlyZXMgYSBuYW1lAGZpbGVOYW1lAGNvbXBpbGUAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAGNhbm5vdCBoYXZlIHNldHRlci9nZXR0ZXIgYW5kIHZhbHVlIG9yIHdyaXRhYmxlAHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAdmFsdWUgaXMgbm90IGl0ZXJhYmxlAHByb3BlcnR5SXNFbnVtZXJhYmxlAG1pc3NpbmcgaW5pdGlhbGl6ZXIgZm9yIGNvbnN0IHZhcmlhYmxlAGxleGljYWwgdmFyaWFibGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQByZXZvY2FibGUAc3RyaWtlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBhc3luY19mdW5jX2ZyZWUAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGNhbm5vdCBkZWxldGUgYSBkaXJlY3QgcmVmZXJlbmNlIGluIHN0cmljdCBtb2RlAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG9jdGFsIGxpdGVyYWxzIGFyZSBkZXByZWNhdGVkIGluIHN0cmljdCBtb2RlAHVuaWNvZGUAICBieXRlY29kZQBKU0Z1bmN0aW9uQnl0ZWNvZGUAc2tpcF9kZWFkX2NvZGUAaW52YWxpZCBhcmd1bWVudCBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllciBpbiBtb2R1bGUgY29kZQBpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGZyb21DaGFyQ29kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAcmVkdWNlAHNvdXJjZQAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBwcm9wZXJ0eSBjb25zdHJ1Y3RvciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlAGludmFsaWQgVVRGLTggc2VxdWVuY2UAY2lyY3VsYXIgcmVmZXJlbmNlAHNsaWNlAHNwbGljZQByYWNlAHJlcGxhY2UAJSsuKmUAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAdW5leHBlY3RlZCAneWllbGQnIGtleXdvcmQAbWFwX2RlY3JlZl9yZWNvcmQAaXRlcmF0b3IgZG9lcyBub3QgaGF2ZSBhIHRocm93IG1ldGhvZABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kACdzdXBlcicgaXMgb25seSB2YWxpZCBpbiBhIG1ldGhvZABmcm91bmQAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAG91dCBvZiBib3VuZABmaW5kAGJpbmQAaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAGV4dHJhbmVvdXMgY2hhcmFjdGVycyBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZGF0YSBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZW5kAGludmFsaWQgaW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYW5kAGludmFsaWQgJ2luc3RhbmNlb2YnIHJpZ2h0IG9wZXJhbmQAaW52YWxpZCAnaW4nIG9wZXJhbmQAdHJpbUVuZABwYWRFbmQAYm9sZAAlbGxkAGdjX2RlY3JlZl9jaGlsZAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAZXhwZWN0aW5nIDxicmFuZD4gcHJpdmF0ZSBmaWVsZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAZml4ZWQAdG9GaXhlZABzZXRfb2JqZWN0X25hbWVfY29tcHV0ZWQAcmVnZXggbm90IHN1cHBvcnRlZABldmFsIGlzIG5vdCBzdXBwb3J0ZWQAUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkAGludGVycnVwdGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZAByZWplY3RlZABtZW1vcnkgYWxsb2NhdGVkAG1lbW9yeSB1c2VkAGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIHVuZGVmaW5lZABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFVuZGVmaW5lZABwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAAnJXMnIGlzIG5vdCBkZWZpbmVkAGdyb3VwIG5hbWUgbm90IGRlZmluZWQAYWxsU2V0dGxlZABmdWxmaWxsZWQAY2Fubm90IGJlIGNhbGxlZABpc1NlYWxlZAAhc2gtPmlzX2hhc2hlZAB2YXJfcmVmLT5pc19kZXRhY2hlZABBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZAAlMDJkLyUwMmQvJTAqZAAlLjNzICUuM3MgJTAyZCAlMCpkADolZABpbnZhbGlkIHRocm93IHZhciB0eXBlICVkAHNjAGpzX2RlZl9tYWxsb2MAdHJ1bmMAZ2MAZXhlYwAvdG1wL3F1aWNranMvcXVpY2tqcy5jAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwAvdG1wL3F1aWNranMvbGlidW5pY29kZS5jAHN1YgBwcm9taXNlX3JlYWN0aW9uX2pvYgBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHJ3YQBfX2xvb2t1cFNldHRlcl9fAF9fZGVmaW5lU2V0dGVyX18AX19sb29rdXBHZXR0ZXJfXwBfX2RlZmluZUdldHRlcl9fAF9fcHJvdG9fXwBbU3ltYm9sLnNwbGl0XQBbU3ltYm9sLnNwZWNpZXNdAFtTeW1ib2wuaXRlcmF0b3JdAFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wudG9TdHJpbmdUYWddAFtTeW1ib2wudG9QcmltaXRpdmVdAFt1bnN1cHBvcnRlZCB0eXBlXQBbZnVuY3Rpb24gYnl0ZWNvZGVdAFtTeW1ib2wuaGFzSW5zdGFuY2VdAFtTeW1ib2wucmVwbGFjZV0AWwAlMDJkOiUwMmQ6JTAyZC4lMDNkWgBQT1NJVElWRV9JTkZJTklUWQBORUdBVElWRV9JTkZJTklUWQBwLT5jbGFzc19pZCA9PSBKU19DTEFTU19BUlJBWQBzdGFja19sZW4gPCBQT1BfU1RBQ0tfTEVOX01BWAAtJTAyZC0lMDJkVABKU19BdG9tR2V0U3RyUlQAb3Bjb2RlIDwgUkVPUF9DT1VOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBOQU4AJTAyZDolMDJkOiUwMmQgJWNNAHMtPmxhYmVsX3Nsb3RzW2xhYmVsXS5maXJzdF9yZWxvYyA9PSBOVUxMAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAcHJzICE9IE5VTEwAc2YtPmN1cl9zcCAhPSBOVUxMAHNmICE9IE5VTEwAbXIxICE9IE5VTEwAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTABiLT5mdW5jX2tpbmQgPT0gSlNfRlVOQ19OT1JNQUwAZW5jb2RlVVJJAGRlY29kZVVSSQBQSQBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQIHx8IHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVBfREVQVEgAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwBJTkYAMDEyMzQ1Njc4OUFCQ0RFRgBTSVpFAE1BWF9WQUxVRQBNSU5fVkFMVUUATkFNRQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUATE9HMkUATE9HMTBFAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9BV0FJVElOR19SRVRVUk4gfHwgcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0NPTVBMRVRFRABVVEMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgAmcXVvdDsAc2V0VWludDgAZ2V0VWludDgAc2V0SW50OABnZXRJbnQ4AG1hbGZvcm1lZCBVVEYtOAByYWRpeCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYAc2V0VWludDE2AGdldFVpbnQxNgBzZXRJbnQxNgBnZXRJbnQxNgBhcmdjID09IDUAc2V0RmxvYXQ2NABnZXRGbG9hdDY0AGFyZ2MgPT0gMwBhdGFuMgBsb2cyAFNRUlQxXzIAU1FSVDIATE4yAGNsejMyAHNldFVpbnQzMgBnZXRVaW50MzIAc2V0SW50MzIAZ2V0SW50MzIAc2V0RmxvYXQzMgBnZXRGbG9hdDMyAHN0YWNrX2xlbiA+PSAyAEpTX0F0b21Jc051bWVyaWNJbmRleDEAanNfZmN2dDEAZXhwbTEAbHMtPmFkZHIgPT0gLTEAc3RhY2tfbGVuID49IDEAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBzdGFja19sZW4gPT0gMQBqc19mcmVlX3NoYXBlMABsb2cxMABMTjEwAHAtPnJlZl9jb3VudCA+IDAAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGFzeW5jIGZ1bmN0aW9uICoACn0pAGxpc3RfZW1wdHkoJnJ0LT5nY19vYmpfbGlzdCkAaiA9PSAoc2gtPnByb3BfY291bnQgLSBzaC0+ZGVsZXRlZF9wcm9wX2NvdW50KQBKU19Jc1VuZGVmaW5lZChmdW5jX3JldCkAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQAhYXRvbV9pc19mcmVlKHApAChudWxsKQAgKG5hdGl2ZSkAanNfY2xhc3NfaGFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQB1bmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg/OikAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAC1fLiF+KicoKQAgYW5vbnltb3VzKABTeW1ib2woAGV4cGVjdGluZyAnfScAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAGV4cGVjdGluZyAnYXMnAHVuZXhwZWN0ZWQgdG9rZW4gaW4gZXhwcmVzc2lvbjogJyUuKnMnAHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwByZWRlY2xhcmF0aW9uIG9mICclcycAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjaXJjdWxhciByZWZlcmVuY2Ugd2hlbiBsb29raW5nIGZvciBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBDb3VsZCBub3QgZmluZCBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwB1bnN1cHBvcnRlZCByZWZlcmVuY2UgdG8gJ3N1cGVyJwBpbnZhbGlkIHVzZSBvZiAnc3VwZXInACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBt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YWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAc3RhdHVzAHJlYXNvbgBnbG9iYWxUaGlzAHRvSlNPTgBPYmplY3QAQXJyYXkARXJyb3IATnVtYmVyAFN0cmluZwBCb29sZWFuAFN5bWJvbABBcmd1bWVudHMATWF0aABKU09OAERhdGUARnVuY3Rpb24AR2VuZXJhdG9yRnVuY3Rpb24ARm9ySW5JdGVyYXRvcgBSZWdFeHAAQXJyYXlCdWZmZXIAU2hhcmVkQXJyYXlCdWZmZXIAVWludDhDbGFtcGVkQXJyYXkASW50OEFycmF5AFVpbnQ4QXJyYXkASW50MTZBcnJheQBVaW50MTZBcnJheQBJbnQzMkFycmF5AFVpbnQzMkFycmF5AEZsb2F0MzJBcnJheQBGbG9hdDY0QXJyYXkARGF0YVZpZXcATWFwAFNldABXZWFrTWFwAFdlYWtTZXQATWFwIEl0ZXJhdG9yAFNldCBJdGVyYXRvcgBBcnJheSBJdGVyYXRvcgBTdHJpbmcgSXRlcmF0b3IAUmVnRXhwIFN0cmluZyBJdGVyYXRvcgBHZW5lcmF0b3IAUHJveHkAUHJvbWlzZQBQcm9taXNlUmVzb2x2ZUZ1bmN0aW9uAFByb21pc2VSZWplY3RGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAEFzeW5jRnVuY3Rpb25SZXNvbHZlAEFzeW5jRnVuY3Rpb25SZWplY3QAQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBBc3luY0dlbmVyYXRvcgBFdmFsRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBTeW50YXhFcnJvcgBUeXBlRXJyb3IAVVJJRXJyb3IASW50ZXJuYWxFcnJvcgA8YnJhbmQ+AFN5bWJvbC50b1ByaW1pdGl2ZQBTeW1ib2wuaXRlcmF0b3IAU3ltYm9sLm1hdGNoAFN5bWJvbC5tYXRjaEFsbABTeW1ib2wucmVwbGFjZQBTeW1ib2wuc2VhcmNoAFN5bWJvbC5zcGxpdABTeW1ib2wudG9TdHJpbmdUYWcAU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZQBTeW1ib2wuaGFzSW5zdGFuY2UAU3ltYm9sLnNwZWNpZXMAU3ltYm9sLnVuc2NvcGFibGVzAFN5bWJvbC5hc3luY0l0ZXJhdG9yAAAAAAABAAAABQABFAUAARUFAAEVBQABFwUAARcBAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAEFAwABCgEBAAABAgEAAQMCAAEBAgABAgMAAQIEAAEDBgABAgMAAQMEAAEEBQABAwMAAQQEAAEFBQABAgIAAQQEAAEDAwABAwMAAQQEAAEFBQADAgENAwEBDQMBAA0DAgENAwIADQMAAQ0DAwEKAQEAAAEAAAABAQIAAQAAAAECAgABAgAAAQEAAAEBAAAGAAAYBQEBDwMCAQoBAgEAAQEBAAEBAQAFAAEXBQABFwUAARcFAQAXBQEAFwUCABcBAgMAAQMAAAYAABgGAAAYBgEAGAUBARcFAQIXBQIAFwECAQABAwAAAQMB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AFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEwABYBMBgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNAENpTMQHiUzCB4lMwAeNTQITjU0AC6FNABOtTQIL6UwGBqVUgULhVsgGAfbKBgH2yAYF92oGBfdoBgn2zgYJ9swGDfbuBiX27AYp9u4GKfbwBi327gYt9MZqQfwGaoH8xKACCASgUgjEkWIIBJGyCMQu4gjEPvoIxB8aCMQLKggGLy4IBj9GCAYfZggGC3YIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9AAAAAAAAAAAAQCcBgdNAwQQAI8LAAARAAgAU0pRAFIAUwA6VFUAV1k/XVwARmFjQmQAZgBoAGoAbABuAABAAAAAABoAkwAAIDUAJwAhACQiKgATa20AJiQnFBYYGxw+Hj8fOT0iIUEeQCUlJiggKkgsQy5LMEwyREKZAACVj31+g4QSgIJ2dxJ7o3x4eYqSmKaghQCaoZN1M5UAjgB0mZiXlgAAngCcAKGgFS4vMLS1T6qpEhQeISIiKjQ1pqc2H0kAAJcBWtodNgUAxMPGxcjHysnMy8TVRdZC10bYztDS1NrZ7vb+DgcPgJ8AIYCj7QDAQMZg59vmmcAAAAZg3Cn9FRIGFvjdBhUShAjGFv/fA8BAAEZg3uBtNzg5FRQXFgAaGRwbAF+3ZURHAE9iTlAAAEgAAACjpKUAAAAAALYAAFoARwBbVlhgXnBpb04AO2e4AAAAAEWoiouMq6xYWK+UsG+yXVxfXmFgZmdoaWJjZGVram1sb25xcABBkPABC3OZAwgDAQOlAxMDAANCA5EDlwOpA0YASQBMAFMAaQAHA7wCTgBKAAwDNQVSBUgAMQNUAFcACgNZAEEAvgIIH4AfKB+QH2gfoB+6H4YDsx/KH4kDwx+hA/ofjwPzH0QFRgU7BU4FPQW4A2IESqZgHskDawDlAEGQ8QEL0gFAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBXdvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmICiAIChgkM0ogaAjGBcFgEQqYCIYMxE1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4GYgJiAnoCYgJ6AmICegJiAnoCYB0cziYCTUhCZhZmFmQAAAAC5AuCgHkCepkBV1GH71iGK8QEAQfDyAQuVBqYFgIqAogCAxgMAAwGBQfZAvxkYiAiAQPqGQM4EgLCsAAEBAKuAioWJigCigImUj4DkOIkDoACAnZrairmKGAiXl6qCqwYNh6i5tgADOwKGiYGMgI6AuQMfgJOBmQGBuAMLCRKAnQqAioG4AyALgJOBlSiAuQEAHwaBioGdgLyAi4CxAoC2ABQQHoGKgZyAuQEFBIGTgZuBuAsfgJOBnIDHBhCA2QGGiojhAYiIAIXJgZoAAIC2jQQBhIqAo4iA5RgoCYGYC4KPg4wBDYCOgN2AQl+CQ7GCnIGdgZ2Bvwg3AYoQIKyEsoDAgaGA9ROBiAWCQNoJgLkAMAABPYkIpgeesIOvACAEgKeIi4GfGQiCtwAKAIK5OYG/hdEQjAYYKBGxvoyAoeRBvACCioKMgoyCjIGLJ4GJAQGEsCCJAIyAj4yyoEuKgfCC/ICOgN+froBB1ICjGiSA3IXcgmBvFYBE4YVBDYDhGIkAm4PPgY2hzYCWguYSDwIDgJgMgECWgZmRjIClh5iKrYKvARmBkICUgcEpCYGLB4CigIqAsgARDAiAmoCNDAiA44SIgvgBA4BgTy+AQJKQQjyPEIuPoQGAQKgGBYCKgKIAgK6ArIHCgJSCQgCAQOGAQJSERAQoqYCIQkUQDIOnE4BApIFCPINBgoFAmIqwg/qAtY6oAYGJgrAZCQOAiYCxgqMgh72Ai4GziIkZgN4RAA2AQJ8Ch5SBuAqApDKEQMI5EICWgNMoAwiBQO0dCIGagdQ5AIHpAAEogOQRGIRBAogBQP8IA4BAjxkLgJ+JpykfgIgpgq2MAUGVMCiA0ZUOAQH5KgAIMIDHCgCAQVqBVTqIYDa2hLqGiINECoC+kL8IgWBAChgwgUydCINSW62BlkIfgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEQQSNQW+AvINF34bsh0quhGwMAICd3/9A774FAP4HAFIKoMELAIINAD8QgNQXQM8aIPUcAIAgABagAMaoAMKqYFb+ILEHAYIQIQITIbgWYZcaATdrIYzRAdfoQfABDgBBkPkBC7cIwJmFma6AiQMEloCegEHJg4uNJgCAQIAgCRgFABAAk4DSgECKh0ClgKUIhajGmhusqqII4gCODoGJEYCPAJ2c2IqAl6CICwSVGIgCgJaYhoqElwWQqbm1EJEGiY6PHwmBlQYAExCPgIwIgo2BiQcrCZUGAQEBnhiAkoKPiAKAlQYBBBCRgI6BloCKOQmVBgEEEJ0Igo6AkAAqEBoIAAoKEouVgLM4EJaAjxCZEQGBnQM4EJaAiQQQngiBjoGQiAKAqAiPBBeClyyRgpeAiAAOua8Bi4a5CAAglwCAiQGIASCAlIOfgL44o5qE8qqTgI8rGgIOE4yLgJClACCBqoBBTAMOAAOBqAOBoAMOAAOBjoC4A4HCpI+P1Q2CQmuBkICZhMqCioaRjJKNkY2MAo6zogOAwtiGqACExYmesJ0MiquDmbWWiLTRgNyukIe1nYyBiauZo6iCiaOBiIaqCqgYKAoEQL+/QRUNgaUNDwAAAICegbQGABIGEw2DjCIG84CMgI+M5AMBiQANKAAAgI8LJBiQqEp2QOQrEYulACCBtzCPlogwMDAwMDAwhkIlgpiINAyD1RyA2QOEqoDdkJ+vj0H/Wb+/YFaMwq2BQQyCj4mBk66PnoHPpoiB5oG/IQAEl48CA4CWnLONsb0qAIGKm4mWmJyGrpuAjyCJiSColhCHk5YQgrEAEQwIAJcRijKLKSmFiDAwqoCNhfKcYCuji5aDsGAhA0FtgemlhoskAImAjAQAAQGA66BBapG/gbWni/MgQIajmYWZitgVDQ0KoouAmYCSAYCOgY2h+sS0QQqcgrCun4ydhKWJnYGjHwSpQJ2Ro4Ojg6eHs4uKgI4GAYCKgI4GAcJBNoiViYeXKKmAiMQpAKsBEIGWiZaInsCSAYmViZnFtym/gI4YEJypnIKcojibmrWJlYmSjJHtyLayjLKMo0FbqSnNnIkHlamRrZSalou0uAmAjKyfmJmjnAEHohCLr42DlACAopGAmNMwABiOgImGrqU5CZUGAQQQkYCLhECdtJGDk4Kdr5MIgEC3rqiDo6+TgLqqjIDGmqSGQLir87+eOQE4CJeOAIDdOaaPAICbgImnMJSAiq2SgJHIQQaIgKSQgLCd7zAIpZSAmCgIn42AQUaSQLyAzkOZ5e6QQMNKS+CORC5P0EJGYCG4QjiGnpDOkJ2Rr4+DnpSEkkKvv//KIMGMvwiAm1f3h0TVqYhgIuYYMAhBIqyCkB9Bi0kD6oSMgoiGiVdl1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4GYgJiAnoCYgJ6AmICegJiAnoCYB0cznkHgrImGj4BBQJ2Rq0TzMBgIjoBAxLrDMESzGJoBAAiAiQMAACgYAAACAQAIAAAAAAEACwYDAwCAiYCQIgSAkFFDYKbfn1A4hkDdgVaBjV0wTB5CHUXhU0oAQdCBAgtm9gMgpgcAqQkgsQoAugsgOw0gxw4gSRIAmxYArBkAwB2AgCAgcC0AADIA2qcATKogx9cg/P0gnQIhlgUB8wgBswwhcxFhPhMBRxchnhoBmiMBeGsB/LJhOtUBLeFBM+4B4KZiSxMDAEHAggIL8iyviaSA1oBCR++WgED6hEEIrAABAQDHiq+eKOQxKQgZiZaAnZraio6JoIiIgJcYiAIEqoK7h6mXgKC1EJEGiQmJkIK3ADEJgoiAiQmJjQGCtwAjCRKAk4sQioK3ADgQgpMJiYkogrcAMQkWgokJiZGAuiIQg4iAjYmPhLYAMBAegYoJiZCCtwAwEB6BigmJj4O2CDAQg4iAiQmJkILFAygAPYkJvAGGiziJ1gGIiimJvQ2JigAAA4GwkwGEioCjiIDjk4CJixsQETKDjIuAjkK+goiIQ5+Dm4KcgZ2Bv5+IAYmgEIpAjoD1i4OLiYn/iruEuImAnIGKhYmVjYCPsISukIqJkIiLgp2MgYmrja+Th4mFifUQlBgoCkDFv0I+gZKA+owYgotL/YJAjIDfn0IpheiBYHWEicQDiZ+Bz4FBDwIDgJYjgNKBsZGJiYWRjIqbh5iMq4OujY6JioCJia6NiwcJiaCCsQARDAiAqCSBQOs4CYlgTyOAQuCPj48Rl4JAv4mkgEK8gEDhgECUhEEkiUVWEAyDpxOAQKSBQjwfiUFwgUCYirCD+YK0jp6KCYmDrIowrIkqo42AiSGrgIuCr407gIvRiyhAn4uEiSu2CDEJgoiAiQkyhEC/kYiJGNCTi4lA1DGImoHRkI6J0IyHidKOg4lA8Y5ApInFKAkYAIGLifYxMoCbiacwH4CIiq2PQZQ4h4+Jt5WAjfkqAAgwB4mvIAgniUFIg2BLaInViaWEuoaYiUP0ALYz0ICKgWBMqoFSYK2BlkIdIi85hp2DQJOCRYixQf+2g7E4jYCVII5FTzCQDgEEQQSGiIlBY4C8jUXVhuw0iVKViWwFBUDv+gYAcAkA8ApAVwwA8A1Axw8A6hcgRRsgVSAgDKhgN6oAUP4AOg0BgxEBxBQhRBkhWh1Bn7xhsNoh8AEOAAAAAEFkbGFtLEFkbG0AQWhvbSxBaG9tAEFuYXRvbGlhbl9IaWVyb2dseXBocyxIbHV3AEFyYWJpYyxBcmFiAEFybWVuaWFuLEFybW4AQXZlc3RhbixBdnN0AEJhbGluZXNlLEJhbGkAQmFtdW0sQmFtdQBCYXNzYV9WYWgsQmFzcwBCYXRhayxCYXRrAEJlbmdhbGksQmVuZwBCaGFpa3N1a2ksQmhrcwBCb3BvbW9mbyxCb3BvAEJyYWhtaSxCcmFoAEJyYWlsbGUsQnJhaQBCdWdpbmVzZSxCdWdpAEJ1aGlkLEJ1aGQAQ2FuYWRpYW5fQWJvcmlnaW5hbCxDYW5zAENhcmlhbixDYXJpAENhdWNhc2lhbl9BbGJhbmlhbixBZ2hiAENoYWttYSxDYWttAENoYW0sQ2hhbQBDaGVyb2tlZSxDaGVyAENob3Jhc21pYW4sQ2hycwBDb21tb24sWnl5eQBDb3B0aWMsQ29wdCxRYWFjAEN1bmVpZm9ybSxYc3V4AEN5cHJpb3QsQ3BydABDeXJpbGxpYyxDeXJsAEN5cHJvX01pbm9hbixDcG1uAERlc2VyZXQsRHNydABEZXZhbmFnYXJpLERldmEARGl2ZXNfQWt1cnUsRGlhawBEb2dyYSxEb2dyAER1cGxveWFuLER1cGwARWd5cHRpYW5fSGllcm9nbHlwaHMsRWd5cABFbGJhc2FuLEVsYmEARWx5bWFpYyxFbHltAEV0aGlvcGljLEV0aGkAR2VvcmdpYW4sR2VvcgBHbGFnb2xpdGljLEdsYWcAR290aGljLEdvdGgAR3JhbnRoYSxHcmFuAEdyZWVrLEdyZWsAR3VqYXJhdGksR3VqcgBHdW5qYWxhX0dvbmRpLEdvbmcAR3VybXVraGksR3VydQBIYW4sSGFuaQBIYW5ndWwsSGFuZwBIYW5pZmlfUm9oaW5neWEsUm9oZwBIYW51bm9vLEhhbm8ASGF0cmFuLEhhdHIASGVicmV3LEhlYnIASGlyYWdhbmEsSGlyYQBJbXBlcmlhbF9BcmFtYWljLEFybWkASW5oZXJpdGVkLFppbmgsUWFhaQBJbnNjcmlwdGlvbmFsX1BhaGxhdmksUGhsaQBJbnNjcmlwdGlvbmFsX1BhcnRoaWFuLFBydGkASmF2YW5lc2UsSmF2YQBLYWl0aGksS3RoaQBLYW5uYWRhLEtuZGEAS2F0YWthbmEsS2FuYQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hbmRpbmFnYXJpLE5hbmQATmV3X1RhaV9MdWUsVGFsdQBOZXdhLE5ld2EATmtvLE5rb28ATnVzaHUsTnNodQBOeWlha2VuZ19QdWFjaHVlX0htb25nLEhtbnAAT2doYW0sT2dhbQBPbF9DaGlraSxPbGNrAE9sZF9IdW5nYXJpYW4sSHVuZwBPbGRfSXRhbGljLEl0YWwAT2xkX05vcnRoX0FyYWJpYW4sTmFyYgBPbGRfUGVybWljLFBlcm0AT2xkX1BlcnNpYW4sWHBlbwBPbGRfU29nZGlhbixTb2dvAE9sZF9Tb3V0aF9BcmFiaWFuLFNhcmIAT2xkX1R1cmtpYyxPcmtoAE9sZF9VeWdodXIsT3VncgBPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVGFuZ3NhLFRuc2EAVG90byxUb3RvAFVnYXJpdGljLFVnYXIAVmFpLFZhaWkAVml0aGt1cWksVml0aABXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAAAAAAAAAMAZmUaFGZlGrhmARo4ZgEaEGZZGgBmeRoAZ4WBGphmERoQZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2JALuJAYKJrwSxkw26ZAGCZK19AY59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U2MsQ3VycmVuY3lfU3ltYm9sAFNrLE1vZGlmaWVyX1N5bWJvbABTbyxPdGhlcl9TeW1ib2wAUGMsQ29ubmVjdG9yX1B1bmN0dWF0aW9uAFBkLERhc2hfUHVuY3R1YXRpb24AUHMsT3Blbl9QdW5jdHVhdGlvbgBQZSxDbG9zZV9QdW5jdHVhdGlvbgBQaSxJbml0aWFsX1B1bmN0dWF0aW9uAFBmLEZpbmFsX1B1bmN0dWF0aW9uAFBvLE90aGVyX1B1bmN0dWF0aW9uAFpzLFNwYWNlX1NlcGFyYXRvcgBabCxMaW5lX1NlcGFyYXRvcgBacCxQYXJhZ3JhcGhfU2VwYXJhdG9yAENjLENvbnRyb2wsY250cmwAQ2YsRm9ybWF0AENzLFN1cnJvZ2F0ZQBDbyxQcml2YXRlX1VzZQBMQyxDYXNlZF9MZXR0ZXIATCxMZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBoLsCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZCxDV0NNAENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkLENXTABDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkLENXS0NGAENoYW5nZXNfV2hlbl9UaXRsZWNhc2VkLENXVABDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZCxDV1UAR3JhcGhlbWVfQmFzZSxHcl9CYXNlAEdyYXBoZW1lX0V4dGVuZCxHcl9FeHQASURfQ29udGludWUsSURDAExvd2VyY2FzZSxMb3dlcgBNYXRoAFVwcGVyY2FzZSxVcHBlcgBYSURfQ29udGludWUsWElEQwBYSURfU3RhcnQsWElEUwBB4MMCC9QVgQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC/QFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD/ACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUB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QmNhbGtjYWxwAEZuAEa8A0a8A2dtAGdrAGdIAHprSHpNSHpHSHpUSHq8AxMhbQATIWQAEyFrABMhZgBtbgBtvANtbQBtYwBtawBtYwAKCk8ACk9tALIAYwAICk8KClAAClBtALMAawBtALMAbQAVInMAbQAVInMAsgBQYWtQYU1QYUdQYXJhZHJhZNFzcgBhAGQAFSJzALIAcABzbgBzvANzbQBzcABWbgBWvANWbQBWawBWTQBWcABXbgBXvANXbQBXawBXTQBXawCpA00AqQNhLm0uQnFjY2NkQ9FrZ0NvLmRCR3loYUhQaW5LS0tNa3RsbWxubG9nbHhtYm1pbG1vbFBIcC5tLlBQTVBSc3JTdldiVtFtQdFtMQDlZTEAMADlZTIAMADlZTMAMADlZWdhbEoETARDRlEmAVMBJ6c3q2sCUqtIjPRmyo7IjNFuMk7lU5yfnJ9RWdGRh1VIWfZhaXaFfz+Guof4iI+QAmobbdlw3nM9hGqR8ZmCTnVTBGsbci2GHp5QXetvzYVkicli2IEfiMpeF2dqbfxyzpCGT7dR3lLEZNNqEHLndgGABoZchu+NMpdvm/qdjHh/eaB9yYMEk3+e1orfWARfYHx+gGJyynjCjPeW2FhiXBNq2m0Pby99N35LltJSi4DcUcxRHHq+ffGDdZaAi89iAmr+ijlO51sSYIdzcHUXU/t4v0+pXw1OzGx4ZSJ9w1NeWAF3SYSqirprsI+IbP5i5YKgY2V1rk5pUclRgWjnfG+C0orPkfVSQlRzWexexWX+byp5rZVqmpeezp6bUsZmd2tij3RekGEAYppkI29JcYl0ynn0fW+AJo/uhCOQSpMXUqNSvVTIcMKIqorJXvVfe2Ouaz58dXPkTvlW51u6XRxgsnNpdJp/RoA0kvaWSJcYmItPrnm0kbiW4WCGTtpQ7ls/XJllAmrOcUJ2/IR8kI2fiGYulolSe2fzZ0FtnG4JdFl1a3gQfV6YbVEuYniWK1AZXeptKo+LX0RhF2iHc4aWKVIPVGVcE2ZOZ6ho5WwGdOJ1eX/PiOGIzJHilj9Tum4dVNBxmHT6haOWV5yfnpdny23ogct6IHuSfMBymXBYi8BONoM6UgdSpl7TYtZ8hVsebbRmO49MiE2Wi4nTXkBRwFUAAAAAWlgAAHRmAAAAAN5RKnPKdjx5XnlleY95Vpe+fL1/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";if(!T(U)){var ha=U;U=c.locateFile?c.locateFile(ha,t):t+ha;}function ia(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(T(a))try{var b=ja(a.slice(37)),d=new Uint8Array(b.length);for(a=0;a<b.length;++a)d[a]=b.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function ka(){return v||"function"!=typeof fetch?Promise.resolve().then(function(){return ia();}):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return ia();});}function V(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b(c);else{var d=b.C;"number"==typeof d?void 0===b.A?O.get(d)():O.get(d)(b.A):d(void 0===b.A?null:b.A);}}}function la(a,b,d){function e(q){return(q=q.toTimeString().match(/\(([A-Za-z ]+)\)$/))?q[1]:"GMT";}var f=new Date().getFullYear(),g=new Date(f,0,1),k=new Date(f,6,1);f=g.getTimezoneOffset();var m=k.getTimezoneOffset();N[a>>2]=60*Math.max(f,m);N[b>>2]=Number(f!=m);a=e(g);b=e(k);a=K(a);b=K(b);m<f?(N[d>>2]=a,N[d+4>>2]=b):(N[d>>2]=b,N[d+4>>2]=a);}function W(a,b,d){W.B||(W.B=!0,la(a,b,d));}function X(a){var b=J(a)+1,d=L(b);B(a,C,d,b);return d;}function ma(){}var na=[null,[],[]];ma=(a,b,d)=>{a=G(a);b=null!==b?JSON.parse(G(b)):[];try{const e=c.externalCall(a,b);return e?X(e):null;}catch(e){return c.HEAPU8[d]=1,X(e.message);}};var ja="function"==typeof atob?atob:function(a){var b="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;b+=String.fromCharCode(e);64!==g&&(b+=String.fromCharCode(f));64!==k&&(b+=String.fromCharCode(m));}while(d<a.length);return b;},oa={a:function(a,b,d,e){w("Assertion failed: "+G(a)+", at: "+[b?G(b):"unknown filename",d,e?G(e):"unknown function"]);},d:function(){return Date.now();},e:function(a,b){a=new Date(1E3*N[a>>2]);N[b>>2]=a.getSeconds();N[b+4>>2]=a.getMinutes();N[b+8>>2]=a.getHours();N[b+12>>2]=a.getDate();N[b+16>>2]=a.getMonth();N[b+20>>2]=a.getFullYear()-1900;N[b+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[b+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[b+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();N[b+32>>2]=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;},f:W,b:function(){w("");},h:ma,g:function(a,b){a=G(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==b?window.alert(a):window.console.log("DUMP",d);},j:function(a){var b=C.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);f=f.min.call(f,2147483648,e+(65536-e%65536)%65536);a:{try{x.grow(f-M.byteLength+65535>>>16);ba();var g=1;break a;}catch(k){}g=void 0;}if(g)return!0;}return!1;},c:function(a,b,d,e){for(var f=0,g=0;g<d;g++){var k=N[b>>2],m=N[b+4>>2];b+=8;for(var q=0;q<m;q++){var l=C[k+q],p=na[a];0===l||10===l?((1===a?aa:u)(I(p,0)),p.length=0):p.push(l);}f+=m;}N[e>>2]=f;return 0;},k:function(a){a=G(a);window.console.log(a);},i:function(a){a=G(a);return Date.parse(a);},l:function(a,b,d,e){a=G(a);b=G(b);d=G(d);d=`Quickjs -- ${a}: ${b}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){c.asm=f.exports;x=c.asm.m;ba();O=c.asm.v;da.unshift(c.asm.n);P--;c.monitorRunDependencies&&c.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()));}function b(f){a(f.instance);}function d(f){return ka().then(function(g){return WebAssembly.instantiate(g,e);}).then(function(g){return g;}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);w(g);});}var e={a:oa};P++;c.monitorRunDependencies&&c.monitorRunDependencies(P);if(c.instantiateWasm)try{return c.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!=typeof WebAssembly.instantiateStreaming||T(U)||"function"!=typeof fetch?d(b):fetch(U,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(b,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(b);});});})().catch(n);return{};})();c.___wasm_call_ctors=function(){return(c.___wasm_call_ctors=c.asm.n).apply(null,arguments);};c._evalInSandbox=function(){return(c._evalInSandbox=c.asm.o).apply(null,arguments);};c._nukeSandbox=function(){return(c._nukeSandbox=c.asm.p).apply(null,arguments);};c._init=function(){return(c._init=c.asm.q).apply(null,arguments);};c._commFun=function(){return(c._commFun=c.asm.r).apply(null,arguments);};c._dumpMemoryUse=function(){return(c._dumpMemoryUse=c.asm.s).apply(null,arguments);};var L=c._malloc=function(){return(L=c._malloc=c.asm.t).apply(null,arguments);};c._free=function(){return(c._free=c.asm.u).apply(null,arguments);};var E=c.stackSave=function(){return(E=c.stackSave=c.asm.w).apply(null,arguments);},F=c.stackRestore=function(){return(F=c.stackRestore=c.asm.x).apply(null,arguments);},A=c.stackAlloc=function(){return(A=c.stackAlloc=c.asm.y).apply(null,arguments);};c.ccall=z;c.cwrap=function(a,b,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==b&&f&&!e?c["_"+a]:function(){return z(a,b,d,arguments,e);};};c.stringToNewUTF8=X;var Y;R=function pa(){Y||Z();Y||(R=pa);};function Z(){function a(){if(!Y&&(Y=!0,c.calledRun=!0,!y)){V(da);h(c);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for("function"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();ea.unshift(b);}V(ea);}}if(!(0<P)){if(c.preRun)for("function"==typeof c.preRun&&(c.preRun=[c.preRun]);c.preRun.length;)fa();V(ca);0<P||(c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("");},1);a();},1)):a());}}c.run=Z;if(c.preInit)for("function"==typeof c.preInit&&(c.preInit=[c.preInit]);0<c.preInit.length;)c.preInit.pop()();Z();return Module.ready;};})();var _default=Module;exports["default"]=_default;
/***/ }),
/* 2 */
@@ -215,8 +215,8 @@ var _pdfSandboxExternal = __w_pdfjs_require__(2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-const pdfjsVersion = '2.13.216';
-const pdfjsBuild = '399a0ec60';
+const pdfjsVersion = '2.14.305';
+const pdfjsBuild = 'eaaa8b4ad';
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 _console = __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 = Object.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});\nexports.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_SEP: ["[+-]?\\\\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.calcOrderIndex = 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 buttonGetCaption(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 choice 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, cScript) {\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 setLock() {}\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 _reset() {\n this.value = this.valueAsString = this.defaultValue;\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(radioData.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 this._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 _getExportValue(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.FieldType = void 0;\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\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 (cColorSpace === "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.defineProperty(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, color) {\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(/(\\d+)/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(string) {\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 (hasParen) {\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 ? /^[+-]?(\\d+(,\\d*)?|,\\d+)$/ : /^[+-]?\\d*,?\\d*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/ : /^[+-]?\\d*\\.?\\d*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.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 let 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 (value1 + 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 cFields) {\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 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 = "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_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\n if (!value) {\n return;\n }\n\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 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(psf) {\n const event = globalThis.event;\n psf = this.AFMakeNumber(psf);\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 value = this.AFMergeChange(event);\n\n if (value.length > 8 || value.startsWith("(")) {\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 = 21.00720099;\nconst FORMS_VERSION = 21.00720099;\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.calculate;\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 send: 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("app.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 === "object") {\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(item) {\n switch (item) {\n case "SaveAs":\n case "FirstPage":\n case "LastPage":\n case "NextPage":\n case "PrevPage":\n case "ZoomViewIn":\n case "ZoomViewOut":\n this._send({\n command: item\n });\n\n break;\n\n case "FitPage":\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case "Print":\n this._send({\n command: "print"\n });\n\n break;\n }\n }\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 popUpMenu() {}\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, nMilliseconds]);\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 Event {\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 = calculationOrder;\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, baseEvent.actions, baseEvent.pageNumber);\n } else if (id === "app" && baseEvent.name === "ResetForm") {\n for (const fieldId of baseEvent.ids) {\n const obj = this._objects[fieldId];\n\n if (obj) {\n obj.obj._reset();\n }\n }\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 } else {\n source.obj._send({\n id: source.obj._id,\n value: "",\n selRange: [0, 0]\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 (hasRan) {\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.event);\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 defaultTransition() {\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._securityHandler = data.EncryptFilterName || null;\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.createActionsMap)(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 _runActions(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(`${year}-${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 hostContainer() {\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 noautocomplete() {\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 this._securityHandler;\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 addIcon() {}\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 setPageRotations() {}\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 val = 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.MILLISECONDS_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#]+)?(\\d+)?(\\.\\d+)?(.)/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 === args.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: data => {\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: `(${months.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: `(\\\\d{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `(\\\\d{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: "(\\\\d{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "(\\\\d{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "(\\\\d{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.13.216\';\nconst pdfjsBuild = \'399a0ec60\';\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, () => {\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 _console = __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 const _object = {\n obj: field,\n wrapped\n };\n\n doc._addField(name, _object);\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 = Object.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});\nexports.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_SEP: ["[+-]?\\\\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.calcOrderIndex = 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 }\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\n if (Array.isArray(this._currentValueIndices)) {\n this._currentValueIndices.length = 0;\n } else {\n this._currentValueIndices = [];\n }\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 return (this._value ?? "").toString();\n }\n\n set valueAsString(_) {}\n\n browseForFileToSubmit() {\n if (this._browseForFileToSubmit) {\n this._browseForFileToSubmit();\n }\n }\n\n buttonGetCaption(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 choice 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).map(child => child.wrapped);\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, cScript) {\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 setLock() {}\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 _reset() {\n this.value = this.defaultValue;\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(radioData.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 this._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 _getExportValue(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.FieldType = void 0;\nexports.createActionsMap = createActionsMap;\nexports.getFieldType = getFieldType;\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 (cColorSpace === "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.defineProperty(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, color) {\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 let date = null;\n\n try {\n date = this._util.scand(cFormat, cDate);\n } catch (error) {}\n\n if (!date) {\n date = Date.parse(cDate);\n\n if (isNaN(date)) {\n date = null;\n } else {\n date = new Date(date);\n }\n }\n\n return date;\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(/(\\d+)/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(string) {\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 (hasParen) {\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 ? /^[+-]?(\\d+(,\\d*)?|,\\d+)$/ : /^[+-]?\\d*,?\\d*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/ : /^[+-]?\\d*\\.?\\d*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.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 let 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 (value1 + 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 cFields) {\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 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 = "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_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\n if (!value) {\n return;\n }\n\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 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(psf) {\n const event = globalThis.event;\n psf = this.AFMakeNumber(psf);\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 value = this.AFMergeChange(event);\n\n if (value.length > 8 || value.startsWith("(")) {\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 = 21.00720099;\nconst FORMS_VERSION = 21.00720099;\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.calculate;\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 send: 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("app.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 (cMsg && typeof cMsg === "object") {\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(item) {\n switch (item) {\n case "SaveAs":\n case "FirstPage":\n case "LastPage":\n case "NextPage":\n case "PrevPage":\n case "ZoomViewIn":\n case "ZoomViewOut":\n this._send({\n command: item\n });\n\n break;\n\n case "FitPage":\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case "Print":\n this._send({\n command: "print"\n });\n\n break;\n }\n }\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 popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n if (cQuestion && 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 (cExpr && 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, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr, nMilliseconds = 0) {\n if (cExpr && 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 Event {\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 = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n this._isCalculating = false;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (Array.isArray(value)) {\n return value;\n }\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, baseEvent.actions, baseEvent.pageNumber);\n } else if (id === "app" && baseEvent.name === "ResetForm") {\n for (const fieldId of baseEvent.ids) {\n const obj = this._objects[fieldId];\n\n if (obj) {\n obj.obj._reset();\n }\n }\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 this.runCalculate(source, event);\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name !== "Keystroke") {\n return;\n }\n\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else {\n const value = source.obj.value = this.mergeChange(event);\n let selStart, selEnd;\n\n if (event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n selStart = event.selStart;\n selEnd = event.selEnd;\n } else {\n selEnd = selStart = savedChange.selStart + event.change.length;\n }\n\n source.obj._send({\n id: source.obj._id,\n value,\n selRange: [selStart, selEnd]\n });\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 } else {\n source.obj._send({\n id: source.obj._id,\n value: "",\n formattedValue: null,\n selRange: [0, 0]\n });\n }\n }\n\n runValidation(source, event) {\n const didValidateRun = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n source.obj.value = event.value;\n this.runCalculate(source, event);\n const savedValue = event.value = source.obj.value;\n let formattedValue = null;\n\n if (this.runActions(source, source, event, "Format")) {\n formattedValue = event.value?.toString?.();\n }\n\n source.obj._send({\n id: source.obj._id,\n value: savedValue,\n formattedValue\n });\n\n event.value = savedValue;\n } else if (didValidateRun) {\n source.obj._send({\n id: source.obj._id,\n value: "",\n formattedValue: null,\n selRange: [0, 0]\n });\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 || this._isCalculating || !this._document.obj.calculate) {\n return;\n }\n\n this._isCalculating = true;\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n\n try {\n this.runCalculate(source, globalThis.event);\n } catch (error) {\n this._isCalculating = false;\n throw error;\n }\n\n this._isCalculating = false;\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder || !this._document.obj.calculate) {\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 break;\n }\n\n event.value = null;\n const target = this._objects[targetId];\n let savedValue = target.obj.value;\n this.runActions(source, target, event, "Calculate");\n\n if (!event.rc) {\n continue;\n }\n\n if (event.value !== null) {\n target.obj.value = event.value;\n }\n\n event.value = target.obj.value;\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n if (target.obj.value !== savedValue) {\n target.wrapped.value = savedValue;\n }\n\n continue;\n }\n\n savedValue = event.value = target.obj.value;\n let formattedValue = null;\n\n if (this.runActions(target, target, event, "Format")) {\n formattedValue = event.value?.toString?.();\n }\n\n target.obj._send({\n id: target.obj._id,\n value: savedValue,\n formattedValue\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 defaultTransition() {\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._securityHandler = data.EncryptFilterName || null;\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.createActionsMap)(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 _runActions(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(`${year}-${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 hostContainer() {\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 noautocomplete() {\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 this._securityHandler;\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 addIcon() {}\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 (cName && 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 getField(cName) {\n const field = this._getField(cName);\n\n if (!field) {\n return null;\n }\n\n return field.wrapped;\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 (nIndex && 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 (bUI && 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 && typeof aFields === "object") {\n aFields = aFields.aFields;\n }\n\n if (aFields && !Array.isArray(aFields)) {\n aFields = [aFields];\n }\n\n let mustCalculate = false;\n let fieldsToReset;\n\n if (aFields) {\n fieldsToReset = [];\n\n for (const fieldName of aFields) {\n if (!fieldName) {\n continue;\n }\n\n if (typeof fieldName !== "string") {\n fieldsToReset = null;\n break;\n }\n\n const field = this._getField(fieldName);\n\n if (!field) {\n continue;\n }\n\n fieldsToReset.push(field);\n mustCalculate = true;\n }\n }\n\n if (!fieldsToReset) {\n fieldsToReset = this._fields.values();\n mustCalculate = this._fields.size !== 0;\n }\n\n for (const field of fieldsToReset) {\n field.obj.value = field.obj.defaultValue;\n\n this._send({\n id: field.obj._id,\n value: field.obj.defaultValue,\n formattedValue: null,\n selRange: [0, 0]\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 setPageRotations() {}\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 val = 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.MILLISECONDS_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#]+)?(\\d+)?(\\.\\d+)?(.)/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 === args.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: data => {\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 (typeof cDate !== "string") {\n return new Date(cDate);\n }\n\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: `(${months.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: `(\\\\d{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `(\\\\d{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: "(\\\\d{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "(\\\\d{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "(\\\\d{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "(\\\\d{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "(\\\\d{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: 2000,\n month: 0,\n day: 1,\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.14.305\';\nconst pdfjsBuild = \'eaaa8b4ad\';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'];
code.push("delete dump;");
let success = false;
let buf = 0;
diff --git a/js/pdfjs/build/pdf.sandbox.js.map b/js/pdfjs/build/pdf.sandbox.js.map
index 53c1f1a..106a5a0 100644
--- a/js/pdfjs/build/pdf.sandbox.js.map
+++ b/js/pdfjs/build/pdf.sandbox.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.sandbox.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.sandbox/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.sandbox/external/quickjs/quickjs-eval.js","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.external.js","webpack://pdfjs-dist/build/pdf.sandbox/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.js"],"sourcesContent":["(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.sandbox\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n})(this, function() {\nreturn ","\nvar Module = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(Module) {\n Module = Module || {};\n\n\nvar b;b||(b=typeof Module !== 'undefined' ? Module : {});var h=Object.assign,n,q;b.ready=new Promise(function(a,c){n=a;q=c});var r=h({},b),t=\"\";\"undefined\"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf(\"blob:\")?t=t.substr(0,t.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):t=\"\";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);h(b,r);r=null;var v;b.wasmBinary&&(v=b.wasmBinary);\nvar noExitRuntime=b.noExitRuntime||!0;\"object\"!==typeof WebAssembly&&x(\"no native wasm support detected\");var y,z=!1;\nfunction A(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var T=(l.length<<2)+1;p=B(T);C(l,D,p,T)}return p},array:function(l){var p=B(l.length);E.set(l,p);return p}};a=b[\"_\"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var w=f[d[m]];w?(0===k&&(k=F()),g[m]=w(e[m])):g[m]=e[m]}d=a.apply(null,g);return d=function(l){0!==k&&G(k);return\"string\"===c?H(l):\"boolean\"===c?!!l:l}(d)}var I=\"undefined\"!==typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction J(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&I)return I.decode(a.subarray(c,d));for(e=\"\";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e}function H(a){return a?J(D,a,void 0):\"\"}\nfunction C(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(d>=e)break;c[d++]=g}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63}c[d++]=128|g>>6&63}c[d++]=128|g&63}}c[d]=0}}\nfunction K(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}return c}function L(a){var c=K(a)+1,d=M(c);d&&C(a,E,d,c);return d}var ba,E,D,N;\nfunction ca(){var a=y.buffer;ba=a;b.HEAP8=E=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new Int32Array(a);b.HEAPU8=D=new Uint8Array(a);b.HEAPU16=new Uint16Array(a);b.HEAPU32=new Uint32Array(a);b.HEAPF32=new Float32Array(a);b.HEAPF64=new Float64Array(a)}var O,da=[],ea=[],fa=[];function ha(){var a=b.preRun.shift();da.unshift(a)}var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};\nfunction x(a){if(b.onAbort)b.onAbort(a);a=\"Aborted(\"+a+\")\";u(a);z=!0;a=new WebAssembly.RuntimeError(a+\". Build with -s ASSERTIONS=1 for more info.\");q(a);throw a;}function S(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var U;U=\"data:application/octet-stream;base64,AGFzbQEAAAABxQZsYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfAF8YAF/AGACf34BfmACf34AYAR/f39/AX9gAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39+fwF/YAN/f38BfmAEf39/fwBgBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAAF/YAAAYAV/f39/fwBgBH9+fn8AYAV/fn5+fwF/YAd/f39/f39/AX9gBn9+f35+fwF/YAR/fn9+AX5gAn5/AX9gBH9+fn8Bf2ACfn8AYAl/f39/f39/f38Bf2AEf35+fwF+YAZ/f39/f38BfmADf35+AGAEf35/fwF/YAV/fn5/fwBgB39+f39/f38BfmADf39+AGAEf35/fwBgBH9+f34Bf2AEf35+fgF/YAR/f39+AX9gCH9/f39/f39/AX9gB39/f39/f38AYAJ8fwF8YAN+f38Bf2ADfHx/AXxgAn5+AX5gBH9/fn8AYAR/fn5+AX5gBn98f39/fwF/YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2ACf38BfGAGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2ADfn5+AX9gBH9/f34BfmACfH8Bf2ACfHwBf2AIf35+fn5/fn4BfmADf358AX5gAAF+YAJ+fgF8YAF/AXxgA39/fAACPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIBYQFpAAgBYQFqABkD2AjWCAoQAyADBBADRAYGRQMCAyEDAQMDNgMQESIBNwoQBAgJAQkNAgICAwwcBgQiAx0DDQ0dCQIGLA4BBAgEAQgOOEYCAwMGHQgPAgkLEAsBCx4OBAMEAwwBBAkWRwYGBg0TAwImAw85CBwnAQgMASMBEw8EHAIBFEgECwMEEBcGAQECLS4CDRA5FB0KBAIIDQQEEw0aECEJFg0uDAYvBAEISQsDKDAOBAATAhABC0oGDQECOwQGSwIEDQ8ODg4OBggCMQYCAjJMTRQTPBsIBBQBFgIOEzMtASgDTgECMQECCD0GASE8AggIAgQWAwQPEAQNAwQJARkYTwQ0AgYDUAIEFClRBQ0+Aw4DAQ4eAjghDQkBLQIBAwgEJwMELAEHBAQbAggGJgkWBhQBBAIGAQQDAQ4FMwNSAgIEDFNUBAVVARYZCFYoFw8DFAYGAgECARgLBz8fBwQCAgsBBAIEAgYNADEEGBoLAQILBgsBBAMEAQQBAgMBQEEOIABXDxkEA1gEDAgDFgNZDSIMGBsPWgYBAQYiBQ8DDQMLAgJbAQICDCwQNwsDAQgCBwcuBAQCAQEGCwQBBDsCBgMJFAEDAAIDAQsCLwEIAQICAhQNAQsCCwsCGSAQXDYDEwMQBAQTAgQWDggZFAMCBhEDXV4wGBAbBwlfYABCGgIdHQ0WAQINKjILDhUADj4LAwQCAQRhFwkNEAQYCQMGDxcCAgMCAxxiBhRjCAIBBAdkByUCAgIZBAgECwQCAQIEAQIpKQIBZQAPDwEBDQkEAQAAZiAJBQAFIR4bABsBAwQDLxQBAwICAQIKARADAgQBAgEIAgwUBAQEAQEgQAVnM0ElAwkDAwoGBgEOKwkLCAwAAyABBhUJEB4fBQwQCAMPBRsLGQECCBEMBQBoDgMDAycFBQUmAho1DAICIgIBBAICAwYBAggoHhMMF0IDDg4GCQsCAQ0OFyQMCB4eJgEQAwQYARgEAQICAgEDAAVpMhwDAgIEGQQpPT9qHRwnHAQCAx8EawYIHwEHAB8bAgA1AAAGBgYGBgYGBgYGBQUAAAEMAAEMAQwBDAEMAQwBDAEMBQUBAAAAJQAABQAACQUAAA8JAAUPEgAACQAAAAAAAAAAAAAAAAcAAAcHBRIFBQAAAAUFBQAAAAAABQUFBQAAAAAAAAAAAAAAAAAABQAAAAAAAAAABQUFAAAAAAMABQAFAQAAAAAFAAAFAAUFAAkJAAAAAAUFFgkAAAAAAAAAAAUAAAAFBQAAAAUABQAAAgAAAAAAAAUAAAASBRIFAAASBRISEgAAABgRChEKCgoRChISBQUPBQUFBQUSACorEyMTOhcRCgAAEgkAAAAAAAAAAA8JCQAjExcTEhgjARoaGgEDEQoRCgoKEQoRCgoKEQoRChEKEQoKEQoRCgYYFRUVFQEDAwMVFRUVAAQIJAABA0MABwcHAA8BBwcHBSQkJAcHAQ8HBwcHBwcVBx8HBwcHAwQHAXAB9wL3AgUHAQGAAoCAAgYJAX8BQZC8xAILB08QAWsCAAFsALIEAW0A3wgBbgCBBQFvAL0HAXAAiwcBcQC2BgFyAKICAXMA5wEBdAEAAXUAzQgBdgDMCAF3AMsIAXgAuwgBeQC6CAF6ALkICfMFAQBBAQv2ApQErwiuCK0IrAizCLIIsQjAB9sErQeTB4UH6wboAr8GtQbHBKEGkAaPBo4GjQbYCIkGygjECMAIvAjsBbgItwi2CLUItAjrBYMEqwiwCIkImgWICOUB3wfWB6oIiwiQBekH0gfRB9AHzgfKB8gHkAeyBqkIqAinCKYIpQinBaQIowiiCKEIoAifCJ4InQicCJsImgiZCJgIlwiWCPADlQjwA5QIkwiSCJEIigiGCIUIhAiHCKUFkAiPCPMH8gfxB/AH7wfuB+0H7AfrB94H3QfcB/AD2wenBdoH2QfYB9cHjgiNCIwIgwiCCIEIgAj/B/4H/Qf8B/sH+gf5B/gH9wf2B/UH9AfqB+gH5wfmB+UH5AfjB+IH4QfgB9UH1AfTB4sCzwfNB8wHywfJB8cHqQXGB8UHxAfDB/0EwgfBB78HqgW+B7wHuwe6B7kHuAe3B7YHtQeyBbQHswfXBLIHsQewB9UErweuB6wH1gSrB6oHqQeoB6cHpgelB6QHoweiB5sDoQegB58HngedB5wHmweaB5kHmAeXB5YH/AOVB5QHsQWzBZIHkQePB44HjQeMB4oHiQeIB4cH0QTQBIYHhAeDB4IHgQeAB/8G/gb9BvwG+wb6BvkG+Ab3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbqBukG6AbnBuYG5QbkBuMG4gbhBuAG3wbeBt0G3AbbBtoG0wjSCNYI2QbHCN4I3AixBNoI1QivBNkCmQXJCMMIwQjYBtQIyAjCCN0I2wjZCKUCsQPOCM8I1wjXBtYG1QbUBtMG0gbRBtAGzwbOBs0GzAbLBsoGyQbIBscGxgbFBsQGwwbCBsEGyQTABsgEvga9BrwGuwa6BrkGuAa3BrQGswaxBrAGngadBpwGmwatBq8GqwapBqcGpQajBqAGrAauBqoGqAamBqQGogafBsUEmgaZBpgGlwaWBpUGlAaTBpIGkQaEBMUE0QiHBtAIlASUBMYIxQi/CL4IvQgKqMYS1gg1AQF/AkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACgCECABEIYFCwsTACAAQoCAgIBwg0KAgICA4ABRC00BAn8gACgCQCICQYACaiEDIAIoApwCIAAoAgRHBEAgA0HAARAOIAMgACgCBBAcIAIgACgCBDYCnAILIAIgAigChAI2ApgCIAMgARAOCyIBAX8gAEIgiKdBdU8EQCAApyIBIAEoAgBBAWo2AgALIAALKAEBfyMAQRBrIgIkACACIAE6AA8gACACQQ9qQQEQiAEaIAJBEGokAAubFgIGfwF+IwBBEGsiAiQAIAAgAEEQaiIEEI4CIAAgACgCOCIBNgI0IAIgATYCDCAAQQA2AjAgACAAKAIUNgIEA0AgACABNgIYIAAgACgCCCIDNgIUAkACQAJ/AkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBUH/AXEiBg59ABcXFxcXFxcXBAMEBAIXFxcXFxcXFxcXFxcXFxcXFxcEEhgIBwwTGBcXCw0XDgkFChwcHBwcHBwcHBcXDxEQFhcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcGFxQHAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFxUXCyABIAAoAjxJDRogBEGqfzYCAAwfCyAAIAFBAWoQ2QMNHCACIAAoAjg2AgwMHgsgAUEBaiABIAEtAAFBCkYbIQELIAIgAUEBajYCDAweCyACIAFBAWo2AgwMHgsCQAJAIAEtAAEiA0EqRwRAIANBL0YNASADQT1HDQIgAiABQQJqNgIMIARBhn82AgAMHQsgAiABQQJqIgE2AgwDQAJAAkACQAJAAkACQCABLQAAIgNBCmsOBAEDAwIACyADQSpHBEAgAw0DIAEgACgCPEkNBCAAQd0YQQAQEwwhCyABLQABQS9HDQMgAiABQQJqNgIMDCULIABBATYCMCAAIAAoAghBAWo2AgggAiABQQFqNgIMDAMLIABBATYCMCACIAFBAWo2AgwMAgsgA0EYdEEYdUEATg0AIAFBBiACQQxqEF8iAUF+cUGowABGBEAgAEEBNgIwDAILIAFBf0cNASACIAIoAgxBAWo2AgwMAQsgAiABQQFqNgIMCyACKAIMIQEMAAsACyABQQJqIQFBAAwVCyACIAFBAWo2AgwgBEEvNgIADBoLIAEtAAFB9QBHDRQgAiABQQFqNgIEAkAgAkEEakEBEIICIgFBAE4EQCABEMQCDQELIAIoAgwhAQwVCyACIAIoAgQ2AgwgAkEBNgIIDBYLIAJBADYCCCACIAFBAWo2AgwgBiEBDBULIAIgAUEBaiIFNgIMIAIgAUECajYCBEHcACEDAkAgAS0AASIGQdwARgRAIAEtAAJB9QBHDQEgAkEEakEBEIICIQMMAQsgBiIDQRh0QRh1QQBODQAgBUEGIAJBBGoQXyEDCyADEMQCRQRAIABBos8AQQAQEwwWCyACIAIoAgQ2AgwgAkEANgIIIAAgAkEMaiACQQhqIANBARD1BCIBRQ0VIABBqX82AhAgACABNgIgDBcLIAEtAAEiA0EuRgRAIAEtAAJBLkcNEiACIAFBA2o2AgwgBEGlfzYCAAwXCyADQTBrQf8BcUEKTw0RDBILIAEtAAEQREUNESAAKAJALQBuQQFxRQ0RIABByNQAQQAQEwwTCyABLQABIgNBKkcEQCADQT1HDRAgAiABQQJqNgIMIARBhX82AgAMFQsgAS0AAkE9RgRAIAIgAUEDajYCDCAEQZB/NgIADBULIAIgAUECajYCDCAEQaN/NgIADBQLIAEtAAFBPUcNDiACIAFBAmo2AgwgBEGHfzYCAAwTCyABLQABIgNBK0cEQCADQT1HDQ4gAiABQQJqNgIMIARBiH82AgAMEwsgAiABQQJqNgIMIARBlX82AgAMEgsgAS0AASIFQS1HBEAgBUE9Rw0NIAIgAUECajYCDCAEQYl/NgIADBILAkAgACgCSEUNACABLQACQT5HDQAgACgCBCADRw0LCyACIAFBAmo2AgwgBEGUfzYCAAwRCwJAAkACQCABLQABIgNBPGsOAgEAAgsgAiABQQJqNgIMIARBmn82AgAMEgsgAS0AAkE9RgRAIAIgAUEDajYCDCAEQYp/NgIADBILIAIgAUECajYCDCAEQZZ/NgIADBELIAAoAkhFIANBIUdyDQsgAS0AAkEtRw0LIAEtAANBLUYNCQwLCwJAAkAgAS0AAUE9aw4CAAEMCyACIAFBAmo2AgwgBEGcfzYCAAwQCwJAAkACQCABLQACQT1rDgIBAAILIAEtAANBPUYEQCACIAFBBGo2AgwgBEGMfzYCAAwSCyACIAFBA2o2AgwgBEGYfzYCAAwRCyACIAFBA2o2AgwgBEGLfzYCAAwQCyACIAFBAmo2AgwgBEGXfzYCAAwPCwJAAkAgAS0AAUE9aw4CAAELCyABLQACQT1GBEAgAiABQQNqNgIMIARBnn82AgAMEAsgAiABQQJqNgIMIARBnX82AgAMDwsgAiABQQJqNgIMIARBpH82AgAMDgsgAS0AAUE9Rw0IIAEtAAJBPUYEQCACIAFBA2o2AgwgBEGgfzYCAAwOCyACIAFBAmo2AgwgBEGffzYCAAwNCyABLQABIgNBJkcEQCADQT1HDQggAiABQQJqNgIMIARBjX82AgAMDQsgAS0AAkE9RgRAIAIgAUEDajYCDCAEQZF/NgIADA0LIAIgAUECajYCDCAEQaF/NgIADAwLIAEtAAFBPUcNBiACIAFBAmo2AgwgBEGOfzYCAAwLCyABLQABIgNB/ABHBEAgA0E9Rw0GIAIgAUECajYCDCAEQY9/NgIADAsLIAEtAAJBPUYEQCACIAFBA2o2AgwgBEGSfzYCAAwLCyACIAFBAmo2AgwgBEGifzYCAAwKCyABLQABIgNBLkcEQCADQT9HDQUgAS0AAkE9RgRAIAIgAUEDajYCDCAEQZN/NgIADAsLIAIgAUECajYCDCAEQaZ/NgIADAoLIAEtAAJBMGtB/wFxQQpJDQQgAiABQQJqNgIMIARBp382AgAMCQsgBUEATg0DIAFBBiACQQxqEF8iAUF+cUGowABGBEAgACgCCCEDDAsLIAEQ5AINCyABEMQCBEAgAkEANgIIDAYLIABBji9BABATDAYLIAAgBkEBIAFBAWogBCACQQxqEJMDRQ0HDAULQQELIQMDQAJ/AkACQAJAAkAgA0UEQCACIAE2AgwMAQsgAS0AACIDRQ0CAkAgA0EKaw4EDwAADwALIANBGHRBGHVBAE4NAyABQQYgAkEMahBfIgNBfnFBqMAARg0OIAIoAgwhASADQX9GDQELQQEhAwwECyABQQFqDAILIAEgACgCPE8NCwsgAUEBagshAUEAIQMMAAsACyAEIAY2AgAgAiABQQFqNgIMDAQLIAAoAgAgASACQQxqQQBBNBDDAiIHEAsNAQJAIAdCgICAgHCDQoCAgIDAflIEQCACKAIMQQYgAkEIahBfEL8BRQ0BCyAAKAIAIAcQCiAAQfc+QQAQEwwCCyAAQYB/NgIQIAAgBzcDIAwDCyAAIAJBDGogAkEIaiABQQAQ9QQiAUUNACAAIAE2AiAgAigCCCEGIABBADYCKCAAIAY2AiQCQCABQSVJDQAgAUEtTQRAIAAoAkAiAy0AbkEBcQ0BIAFBLUcNAyADLwFsIgVBAXENASAFQYD+A3FBgAZHDQMgAygCZA0DIAMoAgQiA0UNAyADLQBsQQFxDQEMAwsgAUEuRw0CIAAoAkQNACAAKAJAIgMvAWwiBUECcQ0AIAVBgP4DcUGABkcNAiADKAJkDQIgAygCBCIDRQ0CIAMtAGxBAnFFDQILIAYEQCAAQYN/NgIQIABBATYCKAwDCyAEIAFB1gBrNgIADAILIARBqH82AgBBfwwCCyAEQYN/NgIACyAAIAIoAgw2AjhBAAshACACQRBqJAAgAA8LIABBATYCMCAAIANBAWo2AggLIAIoAgwhAQwACwALEgAgAEKAgICAcINCgICAgDBRCxUAIAEQ8QFFBEAgACgCECABEIQFCwvJBgIFfwF+IwBBIGsiByQAQoCAgIDgACEKAkACQAJAAkACQAJAAkACQAJAAkAgAUIgiKciBkEBag4IAwUFAAEFBQkCCyAAIAJBwD0QxgEMBgsgACACQbngABDGAQwFCyAGQXlGDQEMAgsgAachBgwCCyABpyEGIAIQXARAIAIQeiIFIAYpAgQiCqdB/////wdxTw0BIAACfyAKQoCAgIAIg1BFBEAgBiAFQQF0ai8BEAwBCyAFIAZqLQAQC0H//wNxEKcDIQoMBQsgAkEwRw0AIAYpAgRC/////weDIQoMBAsgACABEJwEpyIGRQ0CCwNAIAYoAhAiCCAIKAIYIAJxQX9zQQJ0aigCACEFIAgQJyEJAkADQCAFRQ0BIAIgCSAFQQFrQQN0IgVqIggoAgRHBEAgCCgCAEH///8fcSEFDAELCyAGKAIUIAVqIQUCQAJAAkACQCAIKAIAQR52QQFrDgMAAQIDCyAFKAIAIgJFDQYgACACrUKAgICAcIQQDSADQQBBABA1IQoMBwsgBSgCACgCECkDACIBEIQBBEAgACACEOABDAULIAEQDSEKDAYLIAAgBiACIAUgCBDQAkUNAgwDCyAFKQMAEA0hCgwECwJAIAYtAAUiBUEEcUUNACAFQQhxBEAgAhBcBEAgAhB6IgUgBigCKEkEQCAAIAatQoCAgIBwhCAFEHkhCgwHCyAGLwEGQRVrQf//A3FBCUkNBQwCCyAGLwEGQRVrQf//A3FBCEsNASAAIAIQpgMiBUUNAUKAgICA4ABCgICAgDAgBUEASBshCgwFCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQAgBSgCFARAIAAgBq1CgICAgHCEEA0iASACIAMgBSgCFBErACEKIAAgARAKDAULIAUoAgBFDQAgACAHIAatQoCAgIBwhBANIgEgAiAFKAIAERcAIQUgACABEAogBUEASA0CIAVFDQAgBy0AAEEQcQRAIAAgBykDGBAKIAAgBykDECADQQBBABA1IQoMBQsgBykDCCEKDAQLIAYoAhAoAiwiBg0AC0KAgICAMCEKIARFDQIgACACEM8CC0KAgICA4AAhCgwBC0KAgICAMCEKCyAHQSBqJAAgCgtfAQJ/IwBBEGsiBCQAIAAoAgAhAyAEIAI2AgwgA0EDIAEgAkEAENwFIAMgAygCECkDgAEgACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEMYCIARBEGokAAsmAQF/IwBBEGsiAyQAIAMgAjYCDCAAQQQgASACEP0BIANBEGokAAs3AQF+QoCAgIDAfiAAvSIBQoCAgIDAgYD8/wB9IAFC////////////AINCgICAgICAgPj/AFYbCw8AIAAoAkBBgAJqIAEQMAsrACABEPEBRQRAIAAoAhAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABCwsAIAAoAhAgARAfCykAIAAgASACIANCgICAgDBCgICAgDAgBEGAzgByEHYhAiAAIAMQCiACCw8AIAAgACgCACABEBcQOAtKACAAEPQCRQRAQX8PCyACQQBIBEAgABA0IQILIAAgAUH/AXEQDCAAIAIQOCAAKAJAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsoAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBCIARogAkEQaiQACzEAIAFBAE4EQCAAQbQBEAwgACABEDggACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLGAEBfiABKQMAIQMgASACNwMAIAAgAxAKCxEAIABBEGogASAAKAIEEQMACwsAIABC/////29WCxgAIAFCgICAgGBaBEAgACABpyACEQMACwsXACAAIAEgAkKAgICAMCADIARBAhDhAQszAQF/IAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAAL5AQCAn4GfyADQQAgA0EAShshCwNAIAogC0cEQCAAIAIgCkEEdGoiAygCABC1BSEGIwBB4ABrIgkkACADLQAEIQdCgICAgDAhBAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAUOCgECAgUHAwQIBQAGCyAAIAMoAggQtQUhCAJ+AkACQAJAIAMoAgxBAWoOAwIAAQkLIAAgACkDwAEiBCAIIARBABASDAILIAAgACgCKCkDECIEIAggBEEAEBIMAQsgACABIAggAUEAEBILIQQgACAIEBEgBkHCAUYEQEEBIQcMCAsgBkHLAUcNB0EAIQcMBwsCQCAGQcIBRgRAQQEhBwwBCyAGQcsBRw0AQQAhBwsgACABIAZBAiADIAcQlQMaDAcLIAAgASAGQoCAgIAwIAMoAggEfiAJIAMoAgA2AhAgCUEgaiIIQcAAQaMoIAlBEGoQVRogACADKAIIIAhBAEEKQQggAy0ABUECRhsgAy4BBhDJAQVCgICAgDALIgQgAygCDAR+IAkgAygCADYCACAJQSBqIghBwABBnCggCRBVGiAAIAMoAgwgCEEBQQtBCSADLQAFQQJGGyADLgEGEMkBBUKAgICAMAsiBSAHQYA6chB2GiAAIAQQCiAAIAUQCgwGCyADKQMIIgRCgICAgAh8Qv////8PWARAIARC/////w+DIQQMBQsgBLkQFSEEDAQLIAMrAwgQFSEEDAMLIAAgASAGQQIgAyAHEJUDGgwDCxABAAsgAzUCCCEECyAAIAEgBiAEIAcQGRoLIAlB4ABqJAAgACAGEBEgCkEBaiEKDAELCwsyAQF/AkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACABEIYFCwsSACAAQoCAgIBwg0KAgICAIFELBwAgAEEwagsLACAAQfQcQQAQFAueAQEBfgJAAkACQAJAAkACQAJAIAEQVEEIag4QBQMAAAAAAAECBAAAAAABAgALIABBiRxBABAUQoCAgIDgAA8LIAEQDQ8LIABBBBCiASECDAMLIAAgAEEFEKIBIgJBMCABpykCBEL/////B4NBABAZGgwCCyAAQQYQogEhAgwBCyAAQQcQogEhAgsgAhALRQRAIAAgAiABEA0QzQELIAILswQBC38jAEEQayIIJAAgACgCACEFIAggAjYCDEF/IQkCQANAAkAgCCACIgNBBGoiAjYCDCADKAIAIgdBf0YNACAAKAIEIQoDQCABIgQgCk4NAyAEIAQgBWoiCy0AACIGQQJ0IgxBsJoBai0AAGoiASAKSg0DIAZBwAFGBEAgCygAASEJDAELCyAGIAdHBEAgB0H/AXEgBkYgB0EIdkH/AXEgBkZyIAdBEHZB/wFxIAZGckUgB0EYdiAGR3EgBkUgB0GAAklycg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCAMQbOaAWotAABBBWsOGAAJAAkJAQkJAQkJAQEBAgICAgQFBgcJAwkLIAQgBWotAAAhBCAIIANBCGoiAjYCDCADKAIEIgNBf0YEQCAAIAQ2AhQMCQsgAyAERg0IDAkLIAQgBWovAAAhBCAIIANBCGoiAjYCDCADKAIEIgNBf0YEQCAAIAQ2AhQMCAsgAyAERg0HDAgLIAAgBCAFaigAADYCGAwGCyAAIAQgBWoiAygAADYCGCAAIAMvAAQ2AhwMBQsgACAEIAVqKAAANgIgDAQLIAAgBCAFaiIDKAAANgIgIAAgAy0ABDYCHAwDCyAAIAQgBWoiAygAADYCICAAIAMvAAQ2AhwMAgsgACAEIAVqIgMoAAA2AiAgACADKAAENgIYIAAgAy0ACDYCHAwBCwsgACAJNgIMIAAgATYCCEEBIQ0LIAhBEGokACANCwsAIAAgAUEAEJ8EC78BAwJ/AX4BfEF/IQICQAJAAkACQAJAAkAgAUIgiKciA0EHag4OAgQEBAQEAwABAQEEBAUECyABp0EARw8LIAGnDwsgAacpAgQhBCAAIAEQCiAEQv////8Hg0IAUg8LIAGnLQAFIQIgACABEAogAkF/c0GAAXFBB3YPCyADQQdrQW1NBEAgARBJIgVEAAAAAAAAAABiIAW9Qv///////////wCDQoGAgICAgID4/wBUcQ8LIAAgARAKQQEhAgsgAgsZACAAKAIQIAEQ5gEiAUUEQCAAEMcBCyABCz8BAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABBtf0AIAIQE0F/DAELIAAQDwshACACQRBqJAAgAAsiACAALQAHQYABcQRAIAAgAUEBdGovARAPCyAAIAFqLQAQCygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIgBGiACQRBqJAALCwAgACABQQEQ4wUL5QoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyINQg+GIANCMYiEIQ4gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEPIA1CEYghECAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAyEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAyEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyAMQv///////z9YBEAgBUHQAGogASALIAEgCyALUCIGG3kgBkEGdK18pyIGQQ9rEHFBECAGayEGIAUpA1giC0IgiCEPIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyANIAMgDSANUCIIG3kgCEEGdK18pyIIQQ9rEHEgBiAIa0EQaiEGIAUpA0giAkIPhiAFKQNAIgNCMYiEIQ4gAkIRiCEQCyADQg+GQoCA/v8PgyICIAFCIIgiBH4iEiADQhGIQv////8PgyIMIAFC/////w+DIgF+fCIRQiCGIg0gASACfnwiAyANVK0gAiALQv////8PgyILfiIVIAQgDH58IhMgDkL/////D4MiDSABfnwiFCARIBJUrUIghiARQiCIhHwiESACIA9CgIAEhCIOfiIWIAsgDH58Ig8gBCANfnwiEiAQQv////8Hg0KAgICACIQiAiABfnwiEEIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAsgDX4iGCAMIA5+fCIMIBhUrSAMIAIgBH58IgQgDFStfCACIA5+fCAEIAQgEyAVVK0gEyAUVq18fCIEVq18IAIgC34iCyANIA5+fCICIAtUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElStIA8gFlStIA8gElatfHxCIIYgEEIgiIR8IgJWrXwgAiACIBEgFFStIBEgF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIANCP4ghCyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIANCAYYhAyALIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAMgASAGQf8AaiIGEHEgBUEgaiACIAQgBhBxIAVBEGogAyABIAcQoAIgBSACIAQgBxCgAiAFKQMwIAUpAziEQgBSrSAFKQMgIAUpAxCEhCEDIAUpAyggBSkDGIQhASAFKQMAIQIgBSkDCAwBCyAEQv///////z+DIAatQjCGhAsgCoQhCiADUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBIAJUrXwhCgwBCyADIAFCgICAgICAgICAf4WEUEUEQCACIQEMAQsgCiACIAJCAYN8IgEgAlStfCEKCyAAIAE3AwAgACAKNwMIIAVB4ABqJAALagECfwJAIAAoAtgCIgNFDQAgACgC4AIiBCAAKALcAk4NACAAKALoAiABSw0AIAAoAuQCIAJGDQAgAyAEQQN0aiIDIAI2AgQgAyABNgIAIAAgATYC6AIgACAEQQFqNgLgAiAAIAI2AuQC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AkACQAJAIAJBA0wEQAJAAkACQAJAAkACQAJAAkACQCABQdgAaw4JAAECAwQFBgcICgsgACACQT1rQf8BcRAODwsgACACQTlrQf8BcRAODwsgACACQTVrQf8BcRAODwsgACACQTFrQf8BcRAODwsgACACQS1rQf8BcRAODwsgACACQSlrQf8BcRAODwsgACACQSVrQf8BcRAODwsgACACQSFrQf8BcRAODwsgACACQR1rQf8BcRAODwsgAkH/AUsNAQJAAkACQCABQdgAaw4DAAECBAsgAEHAARAODAULIABBwQEQDgwECyAAQcIBEA4MAwsgAUEiRg0BCyAAIAFB/wFxEA4gACACQf//A3EQMA8LIAAgAkEUa0H/AXEQDg8LIAAgAkH/AXEQDgsbAQF/IAAgARA6BH9BAAUgAEGiNkEAEBRBfwsLGQEBfyABIAIQPyIDRQRAIAAgAhCdAwsgAwsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQEgAUEAEP0BIAJBEGokAAsZACAAKAIQIAEQmwIiAUUEQCAAEMcBCyABC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBFGiABRQRAA0AgACAFQYACEGUgAkGAAmsiAkH/AUsNAAsLIAAgBSACEGULIAVBgAJqJAALDwAgACgCQEGAAmogARAOC28CAX4BfyAAIQQCQAJAIAEQEA0AIAAgAUE7IAFBABASIgMQCwRAIAMPCyADECANASAAIAMQCiAAIAEQjwMiBA0AQoCAgIDgAA8LIAQoAiggAkEDdGopAwAQDSEDCyAAIAMgAhBQIQEgACADEAogAQsxACAAIAEgAkKAgICACHxC/////w9YBH4gAkL/////D4MFIAK5EBULIANBh4ABEMwCCxAAIAAgADYCBCAAIAA2AgALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIg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IAooAgwoAgBBGnZBPXEgBkECcXIQoAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCgAxshBwwCCyAAIAZBv9EAEHchBwwBC0F/IQcLIApBEGokACAHC0wBAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAQ+gFFDQELIANBADYCDCAAQQQgAkEAEP0BQX8hBAsgA0EQaiQAIAQLzAEBAn8CQCABQoCAgIBwWgRAIAGnIQMDQAJAIAMtAAVBBHFFDQAgACgCECgCRCADLwEGQRhsaigCFCIERQ0AIAQoAhBFDQAgACADrUKAgICAcIQQDSIBIAIgBCgCEBETACECIAAgARAKIAIPCyADrUKAgICAcIQQDSEBIABBACADIAIQUyEEIAAgARAKIAQNAgJAIAMvAQZBFWtB//8DcUEISw0AIAAgAhCmAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAsaACAAIAEgAkEATgR+IAKtBSACuBAVCxCfAQsLACAAQf////8HcQu/CQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iB0KAgICAgIDAgIB/ViAHQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAWEUEUNACABIQMgAiEEDAELIAMgASABIANUIAUgBlYgBSAGURsiCxshBSAEIAIgCxsiB0L///////8/gyEGIAIgBCALGyICQjCIp0H//wFxIQwgB0IwiKdB//8B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IQgMAgsgAEHwABAMQcoAIQgMAQsgACAIEAwLIAEgCDYCACACIAs2AgAgAyAKNgIAIAQgBzYCACAFBEAgBSAMNgIAC0EAC1oBA38jAEEQayIBJAACQCAAKAIQIgNBqn9GDQAgA0E7RwRAIANB/QBGDQEgACgCMA0BIAFBOzYCACAAQbX9ACABEBNBfyECDAELIAAQDyECCyABQRBqJAAgAgsZACABIAJBD3E6AAQgAUEIaiAAQdAAahBLC7UBAQV/IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDwiAhALDQELIAAgBUEIaiABEEIiByADEEIiCGogAqciBigCBCIEQf////8HcWogBEEfdhCrAw0AIAVBCGoiBCABIAcQnAIaIAQgBkEAIAYoAgRB/////wdxEFcaIAQgAyAIEJwCGiAAIAIQCiAEEDcMAQsgACACEApCgICAgOAACyECIAVBIGokACACCzsAAn8gACABQYCABE8Ef0F/IAAgAUGAgARrQQp2QYCwA2oQlAENARogAUH/B3FBgLgDcgUgAQsQlAELC1EAIABB/wBNBEAgAEEDdkH8////AXFB4OABaigCACAAdkEBcQ8LIABBfnFBjMAARiAAELcEBH9BAQUgAEHggQJB4IYCQRQQ4AJBAEcLQQBHcgtTAQF/IAFCgICAgHBaBH8gAacvAQYiAkEpRgRAAn9BACABQSkQPyICRQ0AGiACLQARBEAgABDKAkF/DAELIAAgAikDABDAAQsPCyACQQJGBUEACwvJAgIBfgJ/IwBBEGsiBSQAAkAgAUKAgICAcFQEQCABIQMMAQsgAkFvcSEEAkACQAJAIAJBEHENACAAIAFBwgEgAUEAEBIiAxALDQEgAxAQDQAgAxAmDQAgBSAAQcYAQRYgBEEBRhtByAAgBBsQMTcDCCAAIAMgAUEBIAVBCGoQNSEDIAAgBSkDCBAKIAMQCw0BIAAgARAKIANCgICAgHBUDQMgACADEAogAEH0yABBABAUDAILIARBAEchBEEAIQIDQCACQQJHBEAgACABQTdBOSACIARGGyABQQAQEiIDEAsNAgJAIAAgAxA6RQ0AIAAgAyABQQBBABA1IgMQCw0DIANC/////29WDQAgACABEAoMBQsgACADEAogAkEBaiECDAELCyAAQfTIAEEAEBQL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zQELIAkgB0EIayIIKQMAEAoMygELIAkgB0EQayIGKQMAEAogBiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAogBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABANNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA03AwAgByAHQQhrKQMAEA03AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDTcDACAHIAdBEGspAwAQDTcDCCAHIAdBCGspAwAQDTcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABANNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDTcDACAHQQhqIQgMwwELIAcgB0EIayIIKQMAIic3AwAgB0EQayIGKQMAIQEgBiAHQRhrIgYpAwA3AwAgCCABNwMAIAYgJxANNwMAIAdBCGohCAzCAQsgByAHQQhrIggpAwAiJzcDACAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAIIAE3AwAgBiAHQSBrIgYpAwA3AwAgBiAnEA03AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBCGsiBikDACEBIAYgJzcDACAIIAE3AwAMvgELIAdBIGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBEGsiBikDACEBIAYgB0EIayIGKQMANwMAIAggATcDACAGICc3AwAMvQELIAdBKGsiBikDACEnIAYgB0EgayIIKQMANwMAIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAggATcDACAGIAdBCGsiBikDADcDACAGICc3AwAMvAELIAdBCGsiBikDACEnIAYgB0EQayIIKQMANwMAIAdBGGsiBikDACEBIAYgJzcDACAIIAE3AwAMuwELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgJzcDACAIIAE3AwAMugELIAdBEGsiBikDACEnIAYgB0EYayIIKQMANwMAIAdBIGsiBikDACEBIAYgB0EoayIGKQMANwMAIAgg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HgwoCyAGQQJqIQsgFCAGLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyATIAEQDTcDGCAJICJBjgEQkQINLCAJIAggEykDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIg0kACAJIA1BDGogB0EIayIKKQMAEMQBIQwgCkKAgICAMCANNQIMQv////8PhSAMGzcDACANQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAGnICendK03AwAMJwsgCSAHQaABEMcCRQ0mDCoLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKAn4gAacgJ6d2IgZBAE4EQCAGrQwBCyAGuBAVCzcDAAwmCyMAQRBrIg0kACAHQQhrIgopAwAhAQJ/AkAgCSANQQxqIAdBEGsiDCkDABDpAwRAIAkgARAKDAELIAkgDUEIaiABEOkDDQAgDAJ+IA0oAgwgDSgCCHYiCkEATgRAIAqtDAELIAq4EBULNwMAQQAMAQsgDEKAgICAMDcDACAKQoCAgIAwNwMAQX8LIQogDUEQaiQAIApFDSUMKQsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6d1rTcDAAwlCyAJIAdBoQEQxwJFDSQMKAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQxwJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMcCRQ0iDCYLIAdBCGsiCCkDACInIAdBEGsiCikDACIBhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDHAkUNIQwlCyAHQQhrIggpAwAiJyAHQRBrIgopAwAiAYRC/////w9YBEAgCiABpyAnp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlwNFDSAMJAsgB0EIayIIKQMAIicgB0EQayIKKQMAIgGEQv////8PWARAIAogAacgJ6dMrUKAgICAEIQ3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ACACQQFBACACKAIYIAIoAhQQ1gENCgwMCyACQSkQLg0JCyACQewAIAAQGxogAhCDARogAigCQCAIQRBqQQBBf0F/QQEQqAEgCCADNgIkIAIQ9gINCCACKAJAEKcBIAIQ7gEgAhDuASACEPQCBEAgAkEOEAwgAkEGEAwgAkHtACADEBsaIAJBDhAMIAJB6wAgBBAbGgsgACEBCyACIAEQHSACQe0AIAMQGxogAkEvEAwgAiADEB0gAigCEEFERgRAIAIQDw0IQQAhACACKAJAIAhBEGpBAEF/QX9BAhCoASACKAJAIgEoAqQBQQBOBEAgAigCACABQdEAEFYiAEEASA0JIAJB2AAQDCACIAIoAkAvAaQBEBYgAkHZABAMIAIgAEH//wNxEBYgAhDUAQsgAhD2Ag0IIAIoAkAiASgCpAFBAE4EfyACQdgAEAwgAiAAQf//A3EQFiACQdkAEAwgAiACKAJALwGkARAWIAIoAkAFIAELEKcBCyACQe4AEAwgAiAEEB0MCAsgACEDCyACEA8NBSACQQAgA0EAENgDDQULIAIgAigCQCgCvAEgBhC0AgsgAkE7EC4NAyACEDQhBCACEDQhACACEDQhAyACEDQhBSACKAJAIAhBEGogCyAFIABBABCoASADIQEgAigCEEE7RwRAIAIgBBAdIAIQlwENBCACQekAIAUQGxogBCEBCyACQTsQLg0DAkAgAigCEEEpRgRAIAggATYCHEEAIQQgASEADAELIAJB6wAgAxAbGiACKAJAKAKEAiEEIAIgABAdIAIQlwENBCACQQ4QDCABIANGDQAgAkHrACABEBsaCyACQSkQLg0DIAIoAkAoAoQCIQcgAiADEB0gAhC2Ag0DIAIgAigCQCgCvAEgBhC0AgJAIAEgA0YgACABRnJFBEAgAigCQCIBQYACaiIGIAEoAoQCIgkgByAEayIDahDMARogBiABKAKAAiAEaiADEIgBGiABKAKAAiAEakGxASADEEUaIAIoAkAiAyABKAKEAkEFazYCmAIgACADKAKsAiIBIAAgAUobIQYgCSAEayEJA0AgACAGRg0CIAMoAqQCIABBFGxqIgooAgQiASAESCABIAdOckUEQCAKIAEgCWo2AgQLIABBAWohAAwACwALIAJB6wAgABAbGgsgAiAFEB0gAigCQBCnAQsgAhDuAQwDCyAB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AQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDCAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACAFEAoLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKAECw4AIAEgACgCEEErEOYCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QxAELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3AEPCyAAIAIQngMiA0UEQEF/DwsgACABIANBgIABENwBIQQgACADEBEgBAtKAQF/AkAgACABIAAoAgRB/////wdxIgIgASgCBEH/////B3EiARCxARDlBSIADQBBACEAIAEgAkYNAEF/QQEgASACSxshAAsgAAsgACAAIAEgAkEATgR+IAKtBSACuBAVCyADQYCAARDfAQvHCgIHfwF+IwBBIGsiCSQAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAIAFCIIinQQFqDgUDAgIAAQILIAAgAxAKIAAgAkGfPRDGAUF/IQUMCgsgACADEAog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EGogBUEBdBAjGiADIAMpAgQiCSAEKQIEfEL/////B4MgCUKAgICAeIOENwIEDAILIANBEGoiBSAGaiAEQRBqIAcQIxogAyADKQIEIgkgBCkCBHxC/////weDIgogCUKAgICAeIOENwIEIAUgCqdqQQA6AAAMAQsCfgJAAkAgBCkCBCIJp0H/////B3EgAykCBCIKp0H/////B3FqIgZBgICAgARPBEAgAEGTwwBBABBNDAELIAAgBiAJIAqEpyIHQR92EPwBIgUNAQtCgICAgOAADAELAkAgB0EATgRAIAVBEGogA0EQaiADKAIEQf////8HcRAjIgcgAygCBEH/////B3FqIARBEGogBCgCBEH/////B3EQIxogBiAHakEAOgAADAELIAVBEGoiBiADIAMoAgRB/////wdxEJQFIAYgAygCBEEBdGogBCAEKAIEQf////8HcRCUBQsgBa1CgICAgJB/hAshCSAAIAEQCgwBCyABIQkLIAAgAhAKIAkLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDgAQsLACAAQZ8JQQAQFAuBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEnwgEoUhEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCABgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAE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k8MAQQAQTQwBCyABIAAoAgxBA2xBAm0QSkH/////AxCxASEBIAAoAhAiBCACQYACSHJFBEAgACABEO4DIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahC0ASICDQELIAAQigMMAQsgACgCECEDIAUoAgwhBCAAIAI2AgQgACAEIAN2IAFqQf////8DELEBNgIMQQAhAwsgBUEQaiQAIAMLgQECAn8BfgJAIAEpAgQiBEL//////////79/VgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBzvUAQbfjAEH4FEGtDhAAAAsgAAvzBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ1QIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDlASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJBH3UgAkH/////B3EgAkEfdnRqQRFqEOYBIgJFBEBBACEDDAQLIAJBATYCACACIAIpAgRC/////3eDIAEpAgRCgICAgAiDhCIJNwIE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cFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCFASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJgEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEKABIgJBAEgNACACRQ0BIABB6iJBABAUC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD8ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECMaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQVCIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCaBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQZLiAEG34wBBjixByzoQAAALiAICAX4CfyMAQTBrIgQkAEHD5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBleMAIAQQVRoMCQsgAEEDQQIgAacbEDEhAwwJCyAAQQEQMSEDDAgLIABBxQAQMSEDDAcLIAAgAUEAEJwDIgEQCwRAIAEhAwwHCyAAIAEgAhCfBCEDIAAgARAKDAYLIAJFDQELIAEQDSEDDAQLIABBvMMAQQAQFAwDCyAAIAEQSUEKQQBBABDLAiEDDAILQbDmACEFCyAAIAUQdCEDCyAEQTBqJAAgAwusBAIJfwF+AkACQAJAAkAgAkKAgICAcINCgICAgJB/UgRAIAAgAhArIgIQC0UNAQwCCyACEA0hAgsgAqciCykCBCINp0H/////B3EhBgJAIA1CgICAgAiDUARAIAtBEGohBUEAIQMDQCAEIAZGRQRAIAMgBCAFai0AAEEHdmohAyAEQQFqIQQMAQsLIANFBEAgBSEJIAENBAwFCyAAIAMgBmpBABD8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ACgCACAQaiIGIAJqIAYgAyAQaxDpASAAKAIAIgYgEGogAyAGaiACECMaDAALAAsJACABIAIQ8QULlQEBA34gAb0iAkL///////////8AgyEDIAC9IgRC////////////AINCgYCAgICAgPj/AFoEQCADQoGAgICAgID4/wBUDwsCf0F/IANCgICAgICAgPj/AFYgACABY3INABpBASAAIAFkDQAaQQAgAEQAAAAAAAAAAGINABogBEIAUwRAIAJCP4enQX9zDwsgAkI/iKcLC6MBAQF+AkACQCACRQRAIABBLxAxIQQgARAQIQIMAQsgAykDACEEAn4CQCABEBAiAkUNACAEEPYDRQ0AIABB0PkAIAAgACgCECAEpxDVAhAxQcL5ABC9AQwBCyAAIAQQKwsiBBALDQELIAINACAAIAFBBRBtIgEQC0UEQCAAIAEgBBDNASAAIAFBMCAEpykCBEL/////B4NBABAZGgsgASEECyAEC0oCAX8BfkKAgICA4AAhBCAAIAEgAhCZASIDBH4gAxCYAQRAIAJFBEBCAA8LIAAQc0KAgICA4AAPCyADKAIgNQIQBUKAgICA4AALCyoAIAAgASACEJkBIgBFBEBCgICAgOAADwsgACgCIDUCDEKAgICAcIQQDQtGAQF/AkAgACgCCCACaiIDIAAoAgxKBEAgACADIAEQ1AINAQsDQCACQQBMBEBBAA8LIAJBAWshAiAAIAEQlAFFDQALC0F/C3gBBX8gASgCBEH/////B3EiA0UEQCACDwsgACgCBEH/////B3EhBSADQQFrIQYgAUEAEC8hBwJAA0AgAiADaiAFSg0BIAAgByACENcBIgRBAEggAyAEaiAFSnINASAAIAEgBEEBaiICQQEgBhDCAw0ACyAEDwtBfwuCAQECfwJAAkAgACABEIIEIgNBAEgNACADRQ0BIAAgAUHtACABQQAQEiIBEAsNAEGJHCECAkAgARAQDQAgARAmDQAgACABEDwiARALDQFBACECIAGnQecAQQAQ1wEhAyAAIAEQCiADQQBODQJB3sUAIQILIAAgAkEAEBQLQX8hAgsgAgtcAQF/AkACQAJAAkAgAUIgiKdBAWoOAwECAAILIAEQDQ8LIAGnIgIvAQZBBkcNACACKQMgIgFCgICAgHCDQoCAgIAQUQ0BCyAAQc87QQAQFEKAgICA4AAhAQsgAQsQAEG3/gAgAEELEKQCQQBHC10BAn9Bqv4AIQMCQAJAIAEoAgRB/////wdxIgQgAkwNACABIAIQL0ElRw0AQbEZIQMgAkECaiAETg0AIAEgAkEBakECEMMDIgJBAE4NAQsgACADEMQDQX8hAgsgAgtUACMAQRBrIgIkACAAIAJBCGogAykDABBHBH5CgICAgOAABSACKQMIQoCAgICAgID4/wCDQoCAgICAgID4/wBSrUKAgICAEIQLIQEgAkEQaiQAIAELVAAjAEEQayICJAAgACACQQhqIAMpAwAQRwR+QoCAgIDgAAUgAikDCEL///////////8Ag0KAgICAgICA+P8AVq1CgICAgBCECyEBIAJBEGokACABC/gCAgN/A34jAEEwayIIJAAgA0IAIANCAFUbIQ0gBUEBayEKIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQigEiCUEASA0AAkAgCUUNACAGEBBFBEAgCCAIKQMoNwMAIAMhCyADQoCAgIAIWgRAIAO5EBUhCwsgCCACNwMQIAggCzcDCCAIIAAgBiAHQQMgCBAiIgs3AyggACAIKQMAEAogACAIKQMIEAogCxALDQILAkACQAJAIAUNACAAIAgpAygiCxDAASIJQQBIDQEgCUUNACAAIAhBIGogCxBAQQBIDQEgACABIAsgCCkDICAEIApCgICAgDBCgICAgDAQ0gQiBEIAUw0BIAAgCxAKDAMLIARC/////////w9TDQEgAEGEwwBBABAUIAgpAyghCwsgACALEAoMAgsgACABIAQgCCkDKBBuQQBIDQEgBEIBfCEECyADQgF8IQMMAQsLIAhBMGokACAMCwwAIABCACAAQgBVGwsoAAJAIAEQEEUEQCABECZFDQELIAAgARA8DwsgACABQThBAEEAELoCC6MCAgZ/AX4jAEEwayICJAACQAJAIAMpAwAiARAgRQ0AQoCAgIDgACELIAAgARCYBCIDQQBIDQEgA0UEQCAAQdbKAEEAEBQMAgsgACACQSxqIAJBKGogAaciCUEDEJABDQEgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAGIANBA3RqKAIEIQhBgIIBIQUCQCAERQ0AIAAgAkEIaiAJIAgQUyIKQQBIDQMgCkUNACAC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wP8AgyAAQjiGhCAAQhiGQoCAgICA4D+DIABCCIZCgICAgPAfg4SEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEC10BBH8gASEDAkADQCACIANNIARBBEtyDQEgAy0AACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkGAAXENAAsgACAFNgIAIAMgAWsPCyAAQQA2AgBBfwteAQF/AkAgAS0AB0GAAXEEQCAAIAFBEGogAkEBdBAjGgwBCyACQQAgAkEAShshAiABQRBqIQEDQCACIANGDQEgACADQQF0aiABIANqLQAAOwEAIANBAWohAwwACwALC7ABAQJ/IwBBEGsiBiQAAkACQCACECBFDQAgAqciBy8BBkEMRw0AIActAClBDEcNACAAIAEgAyADBH8gBAUgBkKAgICAMDcDCCAGQQhqCyAFIAcuASogBygCJBESACECDAELAkAgACACIAEgAyAEECIiAhALRQRAIAIQIA0BIAAgAhAKIABBgh1BABAUCyAFQQA2AgBCgICAgOAAIQIMAQsgBUECNgIACyAGQRBqJAAgAgsUAQF+IAAgARApIQIgACABEAogAgscAQF/IABCgICAgHBaBH8gAKctAAVBB3YFQQALCw0AIAAgASACQQAQ3QELQwACfCABvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh/IACZRAAAAAAAAPA/YQ0BGgsgACABEIEGCwt7AQF+AkACfiAEQQRxBEBBJiECIAAgARBhDAELQSUhAiAAIAEQKQsiARALDQAgACACEKIBIgUQCw0AIABBEBAtIgIEQCACQQA2AgwgAiAEQQNxNgIIIAIgATcDACAFIAIQiwEgBQ8LIAAgBRAKCyAAIAEQCkKAgICA4AALlQECAn4BfyAAIAEQMSEDAkAgARBcDQBBACAAKAIQKAI4IAFBAnRqKAIAKQIEIgJCgICAgICAgIBAg0KAgICAgICAgIB/UiACQoCAgIDw////P4NQIAJC//////////+/f1ZxGw0AIAKnQX9zQR92QQEgAkL/////B4NQGyEECyAEBH4gAEH95gAgA0H75gAQvQEFIAMLC6cBAQV/IACnIgMoAhAiASABKAIYQX9zQQJ0QaR+cmooAgAhAiABECchAQNA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gICAMCEFAkACQCAAIAJBCGogACABECkiARBADQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQYCQAJAAkACQCABIAJBBGogAhCNAkUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQUgAyADQQhqIAhBA3RBCGsQ6QEMAgsCQCAEBEAgACABQgAQYiIFEAsNBiAAIAFCAEIBIAZBARCCA0UNAQwGCyAAIAEgBhBiIgUQCw0FCyAAIAEgBhCTAkEATg0CDAQLIAhBA3QgA2pBCGspAwAhBQsgCSAJKAIoQQFrNgIoCyAHQoGAgIAIVA0AIAa5EBUhBgsgACABQTAgBhBIQQBODQELIAAgBRAKQoCAgIDgACEFCyAAIAEQCiACQRBqJAAgBQsQACAAIAMpAwBBESAEEIEDC94EAgV+A38jAEEQayILJAACfgJAAkACQCAAIAEQKSIGQoCAgIBwVA0AIAanIgovAQZBAkcNACAKLQAFQQlxQQlHDQAgCigCEBAnLQADQQhxRQ0AIAooAhQpAwAiAUL/////D1YNACALIAFCIIZCIIciBzcDCCAHIAo1AihSDQAgByACrHwiBUL/////B1UNACAKNQIgIAVTBEAgACAKIAWnENMFDQMLAn8gBEUgAkEATHJFBEAgCigCJCIEIAJBA3RqIAQgAadBA3QQ6QFBAAwBCyABpwshDEEAIQQgAkEAIAJBAEobIQIDQCACIARGRQRAIAMgBEEDdGopAwAQDSEBIAooAiQgBCAMakEDdGogATcDACAEQQFqIQQMAQsLIAogBT4CKCAKKAIUIAVC/////w+DNwMAIAVCgICAgAh8IQEMAQsgACALQQhqIAYQQA0BIAspAwgiASACrCIIfCIFQoCAgICAgIAQWQRAIABBo8MAQQAQFAwCCwJAIARFIAJBAExyRQRAQgAhByAAIAYgCEIAIAFBfxCCAw0DDAELIAEhBwsgAkEAIAJBAEobrSEIQgAhAQNAIAEgCFIEQCABIAd8IQkgAachAiABQgF8IQEgACAGIAkgAyACQQN0aikDABANEI8BQQBODQEMAwsLIAAgBkEwIAVCgICAgAh8IgFC/////w9YBH4gBUL/////D4MFIAW5EBULEEhBAEgNAQsgACAGEAogBUL/////D4MgAUL/////D1gNARogBbkQFQwBCyAAIAYQCkKAgICA4AALIQEgC0EQaiQAIAELPAAgAUEAQdAAEEUiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQkEBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB1DQAgACABEBcPCyABQQFqIQEMAQsLEAEACyAAIAEQyAELFwAgACAAKQPAASABIAIgA0EAQX8QtwULNQEBfyAAKALsASIHRQRAIABB0t0AQQAQFEKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNQALxgICAn4Cf0KAgICAMCECAkACQCABKQJUIgNCGIZCOIenDQAgA0IghkI4h6cEQCADQhCGQjiHp0UNASAAIAEpA2AQDRCSAUKAgICA4AAPCyABIANC/////49gg0KAgICAEIQ3AlQDQCABKAIUIARKBEAgASgCECAEQQN0aigCBCIFKQJUQhiGQjiHp0UEQCAAIAUQuAUiAhALDQQgACACEAoLIARBAWohBAwBCwsCQCABKAJQIgQEQEKAgICA4ABCgICAgDAgACABIAQRAgBBAEgbIQIMAQsgACABKQNIQoCAgIAwQQBBABA1IQIgAUKAgICAMDcDSAsgAhALBEAgAUEBOgBZIAEgACgCECkDgAEQDTcDYAsgASABKQJUQv///4eAYINCgICACIQ3AlQLIAIPCyABIAEpAlRC/////49ggzcCVCACC8AFAgd/AX4jAEEQayIFJAACQCABKQJUIglCKIZCOIenDQAgASAJQv//g3iDQoCABIQ3AlQDQAJAIAEoAhQgA0wEQEEAIQMDQCABKAIgIANKBEACQCABKAIcIgQgA0EUbGoiAigCCEEBRw0AIAIoAgwiB0H9AEYNACAAIAVBCGogBUEMaiABKAIQIAIoAgBBA3RqKAIEIAcQ7AMiAkUNACAAIAIgASAEIANBFGxqKAIQEOsDDAQLIANBAWohAwwBCwtBACECIAEoAlANAyABKAJIKAIkIQhBACEDQQAhBANAAkAgASgCOCAETARAA0AgAyABKAIgTg0CIAEoAhwgA0EUbGoiAigCCEUEQCAIIAIoAgBBAnRqKAIAIgQgBCgCAEEBajYCACACIAQ2AgQLIANBAWohAwwACwALIAEoAhAgASgCNCAEQQxsaiIHKAIIQQN0aigCBCECAkACQCAHKAIEIgZB/QBGBEAgACACEIkDIgkQC0UNAQwGCyAAIAVBCGogBUEMaiACIAYQ7AMiBgRAIAAgBiACIAcoAgQQ6wMMBgsCQCAFKAIMIgYoAgxB/QBGBEAgACAFKAIIKAIQIAYoAgBBA3RqKAIEEIkDIgkQCw0HIABBARDmAyICRQRAIAAgCRAKDAgLIAAgAkEYaiAJEB4MAQsgBigCBCICRQRAIAUoAggoAkgoAiQgBigCAEECdGooAgAhAgsgAiACKAIAQQFqNgIACyAIIAcoAgBBAnRqIAI2AgAMAQsgACAIIAcoAgBBAnRqKAIAQRhqIAkQHgsgBEEBaiEEDAELC0F/IQIgACABKQNIQoGAgIAQQQBBABAiIgkQCw0DIAAgCRAKQQAhAgwDCyADQQN0IQRBfyECIANBAWohAyAAIAQgASgCEGooAgQQuQVBAE4NAQwCCwtBfyECCyAFQRBqJAAgAgv/AgIGfwJ+AkAgASkCVEIwhkI4h6cNAAJAIAEoAlAEQANAIAIgASgCIE4NAiABKAIcIAJBFGxqIgMoAghFBEAgAEEAEOYDIgRFBEBBfw8LIAMgBDYCBAsgAkEBaiECDAALAAtBfyEEIAEpA0ghCEF/IQcgACAAKQMwQQ0QUCIJEAtFBEAgCaciAyAIpyICNgIgIAIgAigCAEEBajYCACADQgA3AiQCQAJAAkAgAigCPCIFRQ0AIAAgBUECdBBqIgVFDQEgAyAFNgIkQQAhAwNAIAMgAigCPE4NASACKAIkIANBA3RqLQAAIgZBAXEEQCAAIAZBA3ZBAXEQ5gMiBkUNAyAFIANBAnRqIAY2AgALIANBAWohAwwACwALIAEgCTcDSEEAIQcMAQsgCSEICyAAIAgQCgsgBw0BCyABQQE6AFVBACECA0AgASgCFCACTARAQQAPCyACQQN0IQNBfyEEIAJBAWohAiAAIAMgASgCEGooAgQQugVBAE4NAAsLIAQLiwEAAkACQAJAAkACQCABQiCIp0EDag4CAQACCyAAIAAgASADIAQQjAQgAkEAQQAQNQ8LIAAgARAKAkAgACABpyIDELoFQQBIDQAgACADELkFQQBIDQAgACADELgFIgEQC0UNAwsgAEECEKUEDAELIAAgARAKIABBtN4AQQAQFAtCgICAgOAAIQELIAELRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR/IAJBCGsFIAJBBGohAgwBCwsLqAMBBH8jAEEQayIFJAACfyAAKAIQIgYoAqgBIgNFBEACfyACLQAAQS5HBEAgACACIAIQQhCkAwwBCyABEP4FIQMgACACEEIgAyABa0EAIAMbIgNqQQJqEC0iBAR/IAMgBCABIAMQIyIBakEAOgAAAkADQAJAIAItAABBLkcNAEECIQMCQAJAIAItAAFBLmsOAgABAgsgAi0AAkEvRw0BIAEtAABFDQMgARD+BSIDQQFqIAEgAxsiA0GL9gAQrARFDQEgA0GK9gAQrARFDQEgAyABIANJa0EAOgAAQQMhAwsgAiADaiECDAELCyABLQAARQ0AIAEQQiABakEvOwAACyABEEIgAWogAhCABiABBUEACwsMAQsgACABIAIgBigCsAEgAxELAAshA0EAIQICQCADRQ0AAkAgACADEMgBIgRFDQAgACAEELwFIgEEQCAAIAMQGCAAIAQQESABIQIMAgsgACAEEBEgBigCrAEiAUUEQCAFIAM2AgAgAEH/+wAgBRDRAgwBCyAAIAMgBigCsAEgAREBACECCyAAIAMQGAsgBUEQaiQAIAILbwIDfwF+AkAgACgCECgCjAEiAkUNAANAIAFBAEoEQCABQQFrIQEgAigCACICDQEMAgsLIAIpAwgiBEKAgICAcFQNACAEpyIBLwEGEPcBRQ0AIAEoAiAiAS0AEkEEcUUNACAAIAEoAkAQFyEDCyADC1IBBH8gACgCICICQQAgAkEAShshBEEAIQIDQAJAIAIgBEcEfyAAKAIcIgUgAkEUbGooAhAgAUcNASAFIAJBFGxqBUEACw8LIAJBAWohAgwACwAL2AEBBn9BfyECIAEgAUEBa3FFBEAgACABQQJ0EJsCIgUEfyABQf////8DakH/////A3EhBgNAIAMgACgCJE9FBEAgACgCNCADQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiBCgCDCEHIAQgBSAGIAQoAghxQQJ0aiIEKAIANgIMIAQgAjYCACAHIQIMAQsLIANBAWoh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ACAIIAsQZEEAIQkMAQsgACAIIAsQZAsgB0EwaiQAIAkLUwECfwJAAkAgARAgRQ0AIAEQnAUNAEF/IQMgACACEDkiBEUNASAAIAQQmwUhAiAAIAQQESACEAsNASAAIAFBNiACQQEQGUEASA0BC0EAIQMLIAMLMgACQCACRQ0AIAEQIEUNACABEJwFDQAgACABQTYgACACEDFBARAZQQBODQBBfw8LQQALaAEBfyAAKAIQIQICQCABEFxFBEAgAigCLCABTQ0BIAIoAjggAUECdGooAgAiAa1CgICAgJB/hBANGiAAIAFBBBD1Aw8LQYf3AEG34wBBzhdBhDwQAAALQZDIAEG34wBBzxdBhDwQAAAL1gEBBH8gACgCyAEiBigCECIEIAQoAhggAXFBf3NBAnRqKAIAIQUgBBAnIQQCQANAIAVFDQEgASAEIAVBAWsiB0EDdGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgB0EDdGohBAJAIANBAUYNACAEKQMAEIQBBEAgACACEAogACAFKAIEEOABQX8PCyAFLQADQQhxDQAgACACEAogAEGAgAEgARDeAQ8LIAAgBCACEB5BAA8LIAAgACkDwAEgASACQYCABkGAgAIgABD6ARsQlgILfQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB/UXFFBEAgAEHP3gBBABAUDAELIAAgAUESEG0iARALDQAgAaciBCACPgIgIAQgAz4CJCAAIAFB1QBCAEECEBkaIAEPCyAAIAMQCiAAIAIQCkKAgICA4AALDQAgACABQeP6ABCWAwvSAQMBfgF8AX8DQAJAQX8hBQJAAkACQCACEFQOCAAAAAACAgMBAgsgAkIghkIghyEDQQAhBQwCC0EAIQUgAhBJIgS9Qv///////////wCDQoCAgICAgID4/wBWDQFCgICAgICAgICAfyEDIAREAAAAAAAA4MNjDQFC////////////ACEDIAREAAAAAAAA4ENkDQEgBJlEAAAAAAAA4ENjBEAgBLAhAwwCC0KAgICAgICAgIB/IQMMAQsgACACEJ4BIgIQC0UNAQsLIAEgAzcDACAFC7wBAgJ/AXwDQAJAQX8hBAJAAkACQCACEFQOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAIQSSIF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IAAgCCAKrSAGQYCAARCrAUEASA0BIApBAWohCgwACwALIAAgCRAKIAAgARAKIAAgCBAKQoCAgIDgACEICyALQRBqJAAgCCEBIAAgBRAKIAEQCw0CIAMgAzUCBCIFNwMIDAELIAAgA0EIaiAGEEANASAGEA0hASADKQMIIQULIABCgICAgDAgBSAEQeWKAWoxAACGEIwDIgYQCw0AIAAgByAGQgAgBRDzAw0AQQAhBANAIAcgBK0gBVkNAhogACABIAQQeSIGEAsNASAAIAcgBCAGEJUCIQogBEEBaiEEIApBAE4NAAsLIAAgARAKIAchAUKAgICA4AALIQUgACABEAoLIANBEGokACAFIQcMAwsgAykDABANIQUMAQsgABBzDAELAkAgACABIAQQbSIHEAsEQCAAIAUQCgwBCyAAIAcgBSAGIAgQ8wNFDQEgACAHEAoLQoCAgIDgACEHCyACQRBqJAAgBwvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxBxIAQgACACQYH4ACAFaxCgAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwsPACAAIAEgAkEAQQMQgQILrw8CBX8OfiMAQdACayIFJAAgBEL///////8/gyELIAJC////////P4MhCiACIASFQoCAgICAgICAgH+DIQ0gBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCENIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDQwDCyANQoCAgICAgMD//wCEIQ1CACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQBEBCgICAgICA4P//ACANIAIgA4RQGyENQgAhAQwCCyACIAOEUARAIA1CgICAgICAwP//AIQhDUIAIQEMAgsgDEL///////8/WARAIAVBwAJqIAEgCiABIAogClAiBht5IAZBBnStfKciBkEPaxBxQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQcSAGIAdqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBwIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEHAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQcCAFQfABaiAEQgBCACAFKQOIAn1CABBwIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEHAgBUHQAWogBEIAQgAgBSkD6AF9QgAQcCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBwIAVBsAFqIARCAEIAIAUpA8gBfUIAEHAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQcCAFQZABaiADQg+GQgAgAkIAEHAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDCAFKQOYAXwiBCAMVK18IARCAVatfH1CABBwIAVBgAFqQgEgBH1C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QiB9IhVBACAOa61VBEBByK4EQcQANgIAIANBoAFqIAAQggEgA0GQAWogAykDoAEgAykDqAFCf0L///////+///8AEDIgA0GAAWogAykDkAEgAykDmAFCf0L///////+///8AEDIgAykDgAEhFyADKQOIAQwBCyAOQeIBa6wgFVcEQCAFQQBOBEADQCADQaADaiAXIBlCAEKAgICAgIDA/79/EHsgFyAZQoCAgICAgID/PxCnBCECIANBkANqIBcgGSAXIAMpA6ADIAJBAEgiBhsgGSADKQOoAyAGGxB7IBVCAX0hFSADKQOYAyEZIAMpA5ADIRcgBUEBdCACQQBOciIFQQBODQALCwJ+IBUgDqx9QiB8IhanIgJBACACQQBKGyANIBYgDa1TGyICQfEATgRAIANBgANqIAAQggEgAykDiAMhGCADKQOAAyEaQgAMAQsgA0HgAmpEAAAAAAAA8D9BkAEgAmsQ6AEQtQEgA0HQAmogABCCASADQfACaiADKQPgAiADKQPoAiADKQPQAiIaIAMpA9gCIhgQ/QUgAykD+AIhGyADKQPwAgshFiADQcACaiAFIAVBAXFFIBcgGUIAQgAQ/wFBAEcgAkEgSHFxIgBqEKECIANBsAJqIBogGCADKQPAAiADKQPIAhAyIANBkAJqIAMpA7ACIAMpA7gCIBYgGxB7IANBoAJqIBogGEIAIBcgABtCACAZIAAbEDIgA0GAAmogAykDoAIgAykDqAIgAykDkAIgAykDmAIQeyADQfABaiADKQOAAiADKQOIAiAWIBsQpgQgAykD8AEiFiADKQP4ASIYQgBCABD/AUUEQEHIrgRBxAA2AgALIANB4AFqIBYgGCAVpxD8BSADKQPgASEXIAMpA+gBDAELQciuBEHEADYCACADQdABaiAAEIIBIANBwAFqIAMpA9ABIAMpA9gBQgBCgICAgICAwAAQMiADQbABaiADKQPAASADKQPIAUIAQoCAgICAgMAAEDIgAykDsAEhFyADKQO4AQshFSAMIBc3AxAgDCAVNwMYIANBsANqJAAgDCkDGCEVIAwpAxAhFgwFCyACKQNwQgBTDQAgAiACKAIEQQFrNgIECyACIQUgAyECIAAhCEEAIQMjAEGQxgBrIgEkAEEAIA0gDmoiE2shFAJAAn8DQCACQTBHBEACQCACQS5HDQQgBSgCBCIAIAUoAmhGDQAgBSAAQQFqNgIEIAAtAAAMAwsFIAUoAgQiACAFKAJoRwR/QQEhAyAFIABBAWo2AgQgAC0AAAVBASEDIAUQWgshAgwBCwsgBRBaCyECQQEhByACQTBHDQADQCAVQgF9IRUCfyAFKAIEIgAgBSgCaEcEQCAFIABBAWo2AgQgAC0AAAwBCyAFEFoLIgJBMEYNAAtBASEDCyABQQA2ApAGIAwCfgJAAkACQAJAIAJBLkYiAEUgAkEwayIJQQlLcUUEQANAAkAgAEEBcQRAIAdFBEAgFiEVQQEhBwwCCyADRSEADAQLIBZCAXwhFiAGQfwPTARAIAsgFqcgAkEwRhshCyABQZAGaiAGQQJ0aiIAIAoEfyACIAAoAgBBCmxqQTBrBSAJCzYCAEEBIQNBACAKQQFqIgAgAEEJRiIAGyEKIAAgBmohBgwBCyACQTBGDQAgASABKAKARkEBcjYCgEZB3I8BIQsLAn8gBSgCBCIAIAUoAmhHBEAgBSAAQQFqNgIEIAAtAAAMAQsgBRBaCyICQS5GIgAgAkEwayIJQQpJcg0ACwsgFSAWIAcbIRUgA0UgAkFfcUHFAEdyRQRAAkAgBRD6BSIXQoCAgICAgICAgH9SDQBCACEXIAUpA3BCAFMNACAFIAUoAgRBAWs2AgQLIANFDQMgFSAXfCEVDAQLIANFIQAgAkEASA0BCyAFKQNwQgBTDQAgBSAFKAIEQQFrNgIECyAARQ0BC0HIrgRBHDYCAEIAIRYgBRCrBEIADAELIAEoApAGIgBFBEAgASAIt0QAAAAAAAAAAKIQtQEgASkDACEWIAEpAwgMAQsgFSAWUiAWQglVciANQR5MQQAgACANdhtyRQRAIAFBMGogCBCCASABQSBqIAAQoQIgAUEQaiABKQMwIAEpAzggASkDICABKQMoEDIgASkDECEWIAEpAxgMAQsgDkF+ba0gFVMEQEHIrgRBxAA2AgAgAUHgAGogCBCCASABQdAAaiABKQNgIAEpA2hCf0L///////+///8AEDIgAUFAayABKQNQIAEpA1hCf0L///////+///8AEDIgASkDQCEWIAEpA0gMAQsgDkHiAWusIBVVBEBByK4EQcQANgIAIAFBkAFqIAgQggEgAUGAAWogASkDkAEgASkDmAFCAEKAgICAgIDAABAyIAFB8ABqIAEpA4ABIAEpA4gBQgBCgICAgICAwAAQMiABKQNwIRYgASkDeAwBCyAKBEAgCkEITARAIAFBkAZqIAZBAnRqIgAoAgAhBANAIARBCmwhBCAKQQFqIgpBCUcNAAsgACAENgIACyAGQQFqIQYLAkAgCyAVpyIHSiALQQlOciAHQRFKcg0AIAdBCUYEQCABQcABaiAIEIIBIAFBsAFqIAEoApAGEKECIAFBoAFqIAEpA8ABIAEpA8gBIAEpA7ABIAEpA7gBEDIgASkDoAEhFiABKQOoAQwCCyAHQQhMBEAgAUGQAmogCBCCASABQYACaiABKAKQBhChAiABQfABaiABKQOQAiABKQOYAiABKQOAAiABKQOIAhAyIAFB4AFqQQAgB2tBAnRBgKgEaigCABCCASABQdABaiABKQPwASABKQP4ASABKQPgASABKQPoARDvBSABKQPQASEWIAEpA9gBDAILIA0gB0F9bGpBG2oiAEEeTEEAIAEoApAGIgIgAHYbDQAgAUHgAmogCBCCASABQdACaiACEKECIAFBwAJqIAEpA+ACIAEpA+gCIAEpA9ACIAEpA9gCEDIgAUGwAmogB0ECdEG4pwRqKAIAEIIBIAFBoAJqIAEpA8ACIAEpA8gCIAEpA7ACIAEpA7gCEDIgASkDoAIhFiABKQOoAgwBCwNAIAFBkAZqIAYiAkEBayIGQQJ0aigCAEUNAAtBACEKAkAgB0EJbyIARQRAQQAhAAwBCyAAIABBCWogB0EAThshAwJAIAJFBEBBACEAQQAhAgwBC0GAlOvcA0EAIANrQQJ0QYCoBGooAgAiBW0hBkEAIQlBACEEQQAhAANAIAFBkAZqIARBAnRqIgsgCSALKAIAIgsgBW4iEWoiCTYCACAAQQFqQf8PcSAAIAlFIAAgBEZxIgkbIQAgB0EJayAHIAkbIQcgBiALIAUgEWxrbCEJIARBAWoiBCACRw0ACyAJRQ0AIAFBkAZqIAJBAnRqIAk2AgAgAkEBaiECCyAHIANrQQlqIQcLA0AgAUGQBmogAEECdGohBgJAA0AgB0EkTgRAIAdBJEcNAiAGKAIAQdHp+QRPDQILIAJB/w9qIQNBACEJA0AgCa0gAUGQBmogA0H/D3EiBUECdGoiAzUCAEIdhnwiFUKBlOvcA1QEf0EABSAVIBVCgJTr3AOAIhZCgJTr3AN+fSEVIBanCyEJIAMgFaciAzYCACACIAIgAiAFIAMbIAAgBUYbIAUgAkEBa0H/D3FHGyECIAVBAWshAyAAIAVHDQALIApBHWshCiAJRQ0ACyACIABBAWtB/w9xIgBGBEAgAUGQBmoiAyACQf4PakH/D3FBAnRqIgUgBSgCACACQQFrQf8PcSICQQJ0IANqKAIAcjYCAAsgB0EJaiEHIAFBkAZqIABBAnRqIAk2AgAMAQsLAkADQCACQQFqQf8PcSEFIAFBkAZqIAJBAWtB/w9xQQJ0aiEJA0BBCUEBIAdBLUobIQYCQANAIAAhA0EAIQQCQANAAkAgAyAEakH/D3EiACACRg0AIAFBkAZqIABBAnRqKAIAIgAgBEECdEHQpwRqKAIAIgtJDQAgACALSw0CIARBAWoiBEEERw0BCwsgB0EkRw0AQgAhFUEAIQRCACEWA0AgAiADIARqQf8PcSIARgRAIAJBAWpB/w9xIgJBAnQgAWpBADYCjAYLIAFBgAZqIAFBkAZqIABBAnRqKAIAEKECIAFB8AVqIBUgFkIAQoCAgIDlmreOwAAQMiABQeAFaiABKQPwBSABKQP4BSABKQOABiABKQOIBhB7IAEpA+gFIRYgASkD4AUhFSAEQQFqIgRBBEcNAAsgAUHQBWogCBCCASABQcAFaiAVIBYgASkD0AUgASkD2AUQMiABKQPIBSEWQgAhFSABKQPABSEXIApB8QBqIgcgDmsiBUEAIAVBAEobIA0gBSANSCIGGyIAQfAATA0CDAULIAYgCmohCiACIQAgAiADRg0AC0GAlOvcAyAGdiELQX8gBnRBf3MhEUEAIQQgAyEAA0AgAUGQBmogA0ECdGoiEiAEIBIoAgAiEiAGdmoiBDYCACAAQQFqQf8PcSAAIARFIAAgA0ZxIgQbIQAgB0EJayAHIAQbIQcgESAScSALbCEEIANBAWpB/w9xIgMgAkcNAAsgBEUNASAAIAVHBEAgAUGQBmogAkECdGogBDYCACAFIQIMAwsgCSAJKAIAQQFyNgIAIAUhAAwBCwsLIAFBkAVqRAAAAAAAAPA/QeEBIABrEOgBELUBIAFBsAVqIAEpA5AFIAEpA5gFIBcgFhD9BSABKQO4BSEZIAEpA7AFIRogAUGABWpEAAAAAAAA8D9B8QAgAGsQ6AEQtQEgAUGgBWogFyAWIAEpA4AFIAEpA4gFEPsFIAFB8ARqIBcgFiABKQOgBSIVIAEpA6gFIhgQpgQgAUHgBGogGiAZIAEpA/AEIAEpA/gEEHsgASkD6AQhFiABKQPgBCEXCwJAIANBBGpB/w9xIgQgAkYNAAJAIAFBkAZqIARBAnRqKAIAIgRB/8m17gFNBEAgBEUgA0EFakH/D3EgAkZxDQEgAUHwA2ogCLdEAAAAAAAA0D+iELUBIAFB4ANqIBUgGCABKQPwAyABKQP4AxB7IAEpA+gDIRggASkD4AMhFQwBCyAEQYDKte4BRwRAIAFB0ARqIAi3RAAAAAAAAOg/ohC1ASABQcAEaiAVIBggASkD0AQgASkD2AQQeyABKQPIBCEYIAEpA8AEIRUMAQsgCLchHCACIANBBWpB/w9xRgRAIAFBkARqIBxEAAAAAAAA4D+iELUBIAFBgARqIBUgGCABKQOQBCABKQOYBBB7IAEpA4gEIRggASkDgAQhFQwBCyABQbAEaiAcRAAAAAAAAOg/ohC1ASABQaAEaiAVIBggASkDsAQgASkDuAQQeyABKQOoBCEYIAEpA6AEIRULIABB7wBKDQAgAUHQA2ogFSAYQgBCgICAgICAwP8/EPsFIAEpA9ADIAEpA9gDQgBCABD/AQ0AIAFBwANqIBUgGEIAQoCAgICAgMD/PxB7IAEpA8gDIRggASkDwAMhFQsgAUGwA2ogFyAWIBUgGBB7IAFBoANqIAEpA7ADIAEpA7gDIBogGRCmBCABKQOoAyEWIAEpA6ADIRcCQEF+IBNrIAdB/////wdxTg0AIAEgFkL///////////8AgzcDmAMgASAXNwOQAyABQYADaiAXIBZCAEKAgICAgICA/z8QMiABKQOQAyIZIAEpA5gDIhpCgICAgICAgLjAABCnBCECIBYgASkDiAMgAkEASCIDGyEWIBcgASkDgAMgAxshFyAUIAogAkEATmoiCkHuAGpOBEAgBiAGIAAgBUdxIBkgGkKAgICAgICAuMAAEKcEQQBIG0EBRw0BIBUgGEIAQgAQ/wFFDQELQciuBEHEADYCAAsgAUHwAmogFyAWIAoQ/AUgASkD8AIhFiABKQP4Ags3AyggDCAWNwMgIAFBkMYAaiQAIAwpAyghFSAMKQMgIRYMAwsgAikDcEIAWQRAIAIgAigCBEEBazYCBAtByK4EQRw2AgAMAQsCQAJ/IAIoAgQiACACKAJoRwRAIAIgAEEBajYCBCAALQAADAELIAIQWgtBKEYEQEEBIQQMAQtCgICAgICA4P//ACEVIAIpA3BCAFMNAiACIAIoAgRBAWs2AgQMAgsDQAJ/IAIoAgQiACACKAJoRwRAIAIgAEEBajYCBCAALQAADAELIAIQWgsiAEEwa0EKSSAAQcEAa0EaSXIgAEHfAEZyRSAAQeEAa0EaT3FFBEAgBEEBaiEEDAELC0KAgICAgIDg//8AIRUgAEEpRg0BIAIpA3AiGEIAWQRAIAIgAigCBEEBazYCBAsgBEUNAQNAIARBAWshBCAYQgBZBEAgAiACKAIEQQFrNgIECyAEDQALDAELIAIQqwQLIBAgFjcDACAQIBU3AwggDEEwaiQAIBApAwAhFSAPIBApAwg3AwggDyAVNwMAIBBBoAFqJAAgDykDACAPKQMIEO0FIRwgD0EQaiQAIBwL/AMCBH8BfgJAAkACfwJAAkACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFoLIgFBK2sOAwABAAELIAFBLUYCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFoLIgFBOmsiAkF1Sw0BGiAAKQNwQgBTDQIgACAAKAIEQQFrNgIEDAILIAFBOmshAkEACyEEIAJBdkkNACABQTBrIgJBCkkEQANAIAEgA0EKbGpBMGsiA0HMmbPmAEgCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFoLIgFBMGsiAkEJTXENAAsgA6whBQsCQCACQQpPDQADQCABrSAFQgp+fEIwfSEFAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBaCyIBQTBrIgJBCUsNASAFQq6PhdfHwuujAVMNAAsLIAJBCkkEQANAAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBaC0Ewa0EKSQ0ACwsgACkDcEIAWQRAIAAgACgCBEEBazYCBAtCACAFfSAFIAQbIQUMAQtCgICAgICAgICAfyEFIAApA3BCAFMNACAAIAAoAgRBAWs2AgRCgICAgICAgICAfw8LIAUL0AYCBH8DfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABD/AUUNAAJ/IARC////////P4MhCQJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAmEUBsMAgsgAyAJhFALCyEHIAJCMIinIghB//8BcSIGQf//AUYNACAHDQELIAVBEGogASACIAMgBBAyIAUgBSkDECIBIAUpAxgiAiABIAIQ7wUgBSkDCCECIAUpAwAhBAwBCyABIAJC////////P4MgBq1CMIaEIgogAyAEQv///////z+DIARCMIinQf//AXEiB61CMIaEIgkQ/wFBAEwEQCABIAogAyAJEP8BBEAgASEEDAILIAVB8ABqIAEgAkIAQgAQMiAFKQN4IQIgBSkDcCEEDAELIAYEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEDIgBSkDaCIKQjCIp0H4AGshBiAFKQNgCyEEIAdFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABAyIAUpA1giCUIwiKdB+ABrIQcgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCEJIApC////////P4NCgICAgICAwACEIQogBiAHSgRAA0ACfiAKIAl9IAMgBFatfSILQgBZBEAgCyAEIAN9IgSEUARAIAVBIGogASACQgBCABAyIAUpAyghAiAFKQMgIQQMBQsgC0IBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAGQQFrIgYgB0oNAAsgByEGCwJAIAogCX0gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEDIgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgBkEBayEGIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhByAGQQBMBEAgBUFAayAEIAlC////////P4MgBkH4AGogB3KtQjCGhEIAQoCAgICAgMDDPxAyIAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAyIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsg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ayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEK4EDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC4kEAgR+An8CQCABvSIEQgGGIgNQIARC////////////AINCgICAgICAgPj/AFZyRQRAIAC9IgVCNIinQf8PcSIGQf8PRw0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB/w9xIQcCfiAGRQRAQQAhBiAFQgyGIgJCAFkEQANAIAZBAWshBiACQgGGIgJCAFkNAAsLIAVBASAGa62GDAELIAVC/////////weDQoCAgICAgIAIhAshAgJ+IAdFBEBBACEHIARCDIYiA0IAWQRAA0AgB0EBayEHIANCAYYiA0IAWQ0ACwsgBEEBIAdrrYYMAQsgBEL/////////B4NCgICAgICAgAiECyEEIAYgB0oEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgBkEBayIGIAdKDQALIAchBgsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL/////////B1YEQCACIQMMAQsDQCAGQQFrIQYgAkKAgICAgICABFQhByACQgGGIgMhAiAHDQALCyAFQoCAgICAgICAgH+DIQIgBkEASgR+IANCgICAgICAgAh9IAatQjSGhAUgA0EBIAZrrYgLIAKEvwvVAQEEfyAAKAJUIQMCQCAAKAIUIAAoAhwiBWsiBgRAIAAgBTYCFCAAIAUgBhCHBiAGSQ0BCwJAIAMoAhBB4QBHBEAgAygCACEEDAELIAMgAygCBCIENgIACyADKAIMIARqIAEgAygCCCAEayIBIAIgASACSRsiBBAjGiADIAMoAgAgBGoiATYCACABIAMoAgRNDQAgAyABNgIEAn8gAygCCCICIAFLBEAgAygCDCABagwBCyAALQAAQQRxRSACRXINASACIAMoAgxqQQFrC0EAOgAACyAECxgBAX8jAEEQayIBIAA5AwggASsDCCAAogufAQECfgJAIAMpAwAiBEKAgICA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IA43A3ggACAPuSAOuaM5A4gBIABB88wANgJwIAJBmoEBIABB8ABqELYBCyAHKQOgASIOUEUEQCAAIA43A2ggAEHeIjYCYCACQYiAASAAQeAAahCjAQsCQCAHKQOoASIOUA0AIAAgDjcDWCAAQdQeNgJQIAJBiIABIABB0ABqEKMBIAcpA7ABIg5QDQAgACAONwNIIABBzR42AkAgAkGIgAEgAEFAaxCjASAHKQOwASEPIAAgBykDuAEiDkIDhjcDMCAAIA65IA+5ozkDOCAAIA43AyggAEHWHzYCICACQciAASAAQSBqELYBCyAHKQPAASIOUEUEQCAAIAcpA8gBNwMQIAAgDjcDCCAAQfofNgIAIAJBlYABIAAQowELIABBsAZqJAAgAigCTBogAhCzAxogAiACKAIMEQQAGiACLQAAQQFxRQRAIAIoAjQiAARAIAAgAigCODYCOAsgAigCOCIBBEAgASAANgI0CyACQZivBCgCAEYEQEGYrwQgATYCAAsgAigCYBDnASACEOcBCyAMEAggDBDnAQsgB0HQAWokAAv8AgIEfwR+IwBBIGsiAiQAQoCAgIAwIQgCQAJAIAAgARCWASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEGMNACACIAQ2AgggAykDCCIJEBAEfyAEBSAAIAJBCGogCSAEIAQQYw0BIAIoAggLIAIoAgwiBWtBABBKIQMgACABQQAQmQEiBEUNACAELwEGIQcgAiADrSIKNwMYIAIgATcDECAAQQIgAkEQahDrAiIIEAsNACADQQBMDQEgACABEOcCDQAgACAIEOcCDQACQCAAIAhBABCZASIGRQ0AIAQvAQYgBi8BBkcNACAGEJEEIANJDQAgBBCRBCADIAVqSQ0AIAYoAiQgBCgCJCAFIAdB5YoBai0AACIAdGogAyAAdBAjGgwCC0IAIQkDQCAJIApRDQIgACABIAUgCadqrRCfASILEAsNASAAIAggCSALQYCAARDfASEDIAlCAXwhCSADQQBODQALCyAAIAgQCkKAgICA4AAhCAsgAkEgaiQAIAgLzQIBAX4gACABEJYBIgJBAEgEQEKAgICA4AAPCwJAIAJFDQACQAJAAkACQAJAIAGnIgAvAQZB5YoBai0AAA4EAAECAwQLIAAoAiQiACACaiECA0AgACACQQFrIgJPDQUgAC0AACEDIAAgAi0AADoAACACIAM6AAAgAEEBaiEADAALAAsgACgCJCIAIAJBAXRqIQIDQCAAIAJBAmsiAk8NBCAALwEAIQMgACACLwEAOwEAIAIgAzsBACAAQQJqIQAMAAsACyAAKAIkIgAgAkECdGohAgNAIAAgAkEEayICTw0DIAAoAgAhAyAAIAIoAgA2AgAgAiADNgIAIABBBGohAAwACwALIAAoAiQiACACQQN0aiECA0AgACACQQhrIgJPDQIgACkDACEEIAAgAikDADcDACACIAQ3AwAgAEEIaiEADAALAAsQAQALIAEQDQvuAQIGfgJ/IwBBIGsiCyQAQoCAgIAwIQYCQAJAIAAgARCWASIMQQBIDQAgACADKQMAIggQZw0AQoCAgIAwIQcgAkECTgRAIAMpAwghBwsgDK0hCQNAIAUgCVIEQCAAIAEgBRCfASIGEAsNAiALIAE3AxAgCyAFNwMIIAsgBjcDACAAIAggB0EDIAsQIiIKEAsNAiAAIAoQLARAIARFBEAgBiEFDAULIAAgBhAKDAQFIAAgBhAKIAVCAXwhBQwCCwALC0L/////D0KAgICAMCAEGyEFDAELIAAgBhAKQoCAgIDgACEFCyALQSBqJAAgBQu1BAIEfwN+IwBBEGsiBCQAQoCAgIDgACEJAkAgACABEJYBIgZBAEgNAAJ+IAGnIgUvAQYiB0EVRgRAIAAgBCADKQMAEA0Q1QUNAiAENAIADAELIAdBG00EQCAAIAQgAykDABDFAQ0CIAQ1AgAMAQsgACAEIAMpAwAQRw0BIAUvAQZBHEYEQCAEKwMAtrytDAELIAQpAwALIQggBEEANgIAAkAgAkEBTARAIAQgBjYCDAwBCyAAIAQgAykDCCAGIAYQYw0BIAQgBjYCDCACQQNJDQAgAykDECIKEBANACAAIARBDGogCiAGIAYQYw0BCyAFEJgBBEAgABBzDAELAkACQAJAAkACQAJAAkACQAJAIAUvAQZB5YoBai0AAA4EAAECAwQLIAQoAgwiAiAEKAIAIgBMDQcgBSgCJCAAaiAIpyACIABrEEUaDAcLIAQoAgAiACAEKAIMIgIgACACShshAiAIpyEDA0AgACACRg0EIAUoAiQgAEEBdGogAzsBACAAQQFqIQAMAAsACyAEKAIAIgAgBCgCDCICIAAgAkobIQIgCKchAwNAIAAgAkYNBCAFKAIkIABBAnRqIAM2AgAgAEEBaiEADAALAAsgBCgCACIAIAQoAgwiAiAAIAJKGyECA0AgACACRg0EIAUoAiQgAEEDdGogCDcDACAAQQFqIQAMAAsACxABAAsgBCACNgIADAILIAQgAjYCAAwBCyAEIAI2AgALIAEQDSEJCyAEQRBqJAAgCQvwAQIDfwJ+IwBBEGsiBSQAQoCAgIDgACEHAkAgACABEJYBIgRBAEgNACAAIAVBDGogAykDACAEIAQQYw0AIAAgBUEIaiADKQMIIAQgBBBjDQAgBSAENgIEAn8gBCACQQNIDQAaIAQgAykDECIIEBANABogACAFQQRqIAggBCAEEGMNASAFKAIECyAFKAIIIgZrIAQgBSgCDCIDaxCxASICQQBKBEAgAaciBBCYAQRAIAAQcwwCCyAEKAIkIgAgAyAELwEGQeWKAWotAAAiA3RqIAAgBiADdGogAiADdBDpAQsgARANIQcLIAVBEGokACAHC0oCAX4Bf0KAgICAMCECAkAgAUKAgICAcFQNACABpy8BBiIDQRVrQf//A3FBCEsNACAAIAAoAhAoAkQgA0EYbGooAgQQMSECCyACCywBAX5CgICAgOAAIQUgACABEOcCBH5CgICAgOAABSAAIAEgAiADIAQQmgULC6ADAgR+B38gAykDACEFIAJBAk4EfiADKQMIBUKAgICAMAshBCMAQRBrIgIkAEKAgICA4AAhB0KAgICAMCEGAkAgACABQQAQmQEiA0UNACAAIAIgBBCNBA0AAkACQAJAAkAgAikDACIEQgBTDQAgAxCYAQ0DIAAgBRApIgYQCw0EIAanIggvAQYiCkEVa0H//wNxQQhNBEAgCCgCICILKAIMKAIgIgwtAAQNBCADLwEGIQkgAygCICINKAIMKAIgIQ4gAiAINQIoIgU3AwggBCADNQIoIAV9VQ0BIAkgCkcNAiAEIAlB5YoBajEAACIBhqcgDigCCCANKAIQamogDCgCCCALKAIQaiAFIAGGpxDpAQwDCyAAIAJBCGogBhBADQQgBCADNQIoIAIpAwgiBX1XDQELIABBwMEAEGkMAwsgBKchCEEAIQMDQCAFIAOtVw0BIAAgBiADEHkiBBALDQMgAyAIaiEJIANBAWohAyAAIAEgCSAEEJUCQQBODQALDAILQoCAgIAwIQcMAQsgABBzCyAAIAYQCiACQRBqJAAgBwtHAQF+AkACQCACRQRADAELIAAgAykDABDQBSIEEAsNAQsgARAQDQAgACABQQQQbSIBEAtFBEAgACABIAQQzQELIAEhBAsgBAtKAgF/AX5CgICAgOAAIQQgACABIAIQmQEiAwR+IAMQmAEEQCACRQRAQgAPCyAAEHNCgICAgOAADwsgAygCIDUCFAVCgICAgOAACwseACAAIAFBABCZASIARQRAQoCAgIDgAA8LIAA1AigLPQEBfkKAgICAECEBIAMpAwAiBEKAgICAcFoEfiAEpy8BBkEVa0H//wNxQQpJrUKAgICAEIQFQoCAgIAQCwuOAwIFfgF/IwBBIGsiAiQAQoCAgIDgACEIAkAgACABIAQQaCIKRQ0AIAotAAQEQCAAEHMMAQsgACACQRhqIAMpAwBCACAKNAIAIgUgBRB/DQAgAiAFNwMQIAMpAwgiBhAQBH4gBQUgACACQRBqIAZCACAFIAUQfw0BIAIpAxALIAIpAxgiCX0Q0wQhByAAIAFCgICAgDAQ8gEiBhALBEAgBiEIDAELAkAgBhAQBEAgAEKAgICAMCAHIAQQ9AMhBQwBCyACIAdCgICAgAh8Qv////8PWAR+IAdC/////w+DBSAHuRAVCzcDCCAAIAZBASACQQhqEK8BIQUgACAGEAogACACKQMIEAoLAkAgBRALDQACQCAAIAUgBBBoIgNFDQAgACAFIAEQWARAIABB4zFBABAUDAELAkAgAy0ABA0AIAM0AgAgB1MEQCAAQew9QQAQFAwCCyAKLQAEDQAgAygCCCAKKAIIIAmnaiAHpxAjGgwCCyAAEHMLIAAgBRAKDAELIAUhCAsgAkEgaiQAIAgLLgAgACABIAIQaCIARQRAQoCAgIDgAA8LIAAoAgAiAEEATgRAIACtDwsgALgQFQv0AgEBfiABQSgQPyECIARBATYCAAJAAkAgAkUEQCAAQfMqQQAQFAwBCwJAAkACQAJAAkACQAJAAkAgAigCAEEBaw4EAgIHAQALIAVFDQIgACACEMADC0KAgICAMCEBIAVBAWsOAgMEBwsgAykDABANIQECQCAFQQJHDQBBASEDIAIoAgBBAUcNACAAIAEQkgEMAgsgAigCRCIDIAWtNwMAIANBCGsgATcDACACIANBCGo2AkQLQQAhAwsgAkEDNgIAIAIgAzYCFCAAIAJBCGoQwQIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHRKkEAEBQLQoCAgIDgACEBCyABC2UBAX4gAykDACIBEPYDRQRAIABBrzxBABAUQoCAgIDgAA8LQoCAgIAwIQQgAacpAgRCgICAgICAgIBAg0KAgICAgICAgIB/UQR+IAFC/////w+DQoCAgICQf4QQDQVCgICAgDALCy8BAX5CgICAgOAAIQEgACADKQMAECsiBBALBH5CgICAgOAABSAAIASnQQIQ9QMLC0kCAX4BfyAAIAEQwQMiARALBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDVAhAxIQILIAAgARAKIAILCQAgACABEMEDC04BAX4jAEEQayICJAAgAiAAIAEQwQMiATcDCAJAIAEQCwRAIAEhBAwBCyAAQoCAgIAwQQEgAkEIahDHBCEEIAAgARAKCyACQRBqJAAgBAstAEKAgICA4AAgACADKQMAIAMpAwhBABCaAiIAQQBHrUKAgICAEIQgAEEASBsLhgEBA34gAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAEChCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDkiAkUNACAAIAEgAiAGEA0gBEEAEIcEIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAEChCgICAgOAADwsgACABQQNBABCBAwtjAQF+IAMpAwAiBEL/////b1gEQCAAEChCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOSICRQ0AIAAgBCACEHghAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQKAwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA5IgINAQtCgICAgOAADwsgACABIAIgBEEAEBIhASAAIAIQESABC2YBAX4gAykDACIEQv////9vWARAIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAJBABDcASEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuKAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgEQsgENACAAQd8pQQAQFAwBCyAAIARBDGogBRCKBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEJADIQEgACACIAMQmQMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmwMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxQENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJICDQAgACACQQhqIAMpAwgQkgINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUAAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQASABQp26s/uUkv2iJX5CDIhCgICAgICAgPg/hL9EAAAAAAAA8L+gEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEATA0AQoCAgIDgACEBIAAgCEEIaiADKQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQgwYgB0EIaiAHIAQQgwYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv///////////wCDQoCAgICAgID4/wBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H/D3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9/UXJFBEAgAkKAgICAgICA+D+Evw8LIAK/DwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC90EAgJ8BX8jAEEQayIIJAACfiACRQRARAAAAAAAAPD/RAAAAAAAAPB/IAQbEBUMAQsCfCADKQMAIgFC/////w9YBEAgAkEBIAJBAUobIQsgAachCUEBIQcDQCAHIAtHBEAgCbcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiABpyEKAn8gBARAIAkgChBKDAELIAkgChCxAQshCSAHQQFqIQcMAQsLIAmtDAILQoCAgIDgACAAIAhBCGogARBHDQEaQQEhByAIKwMICyEFIAcgAiACIAdIGyECA0AgAiAHRwRAQoCAgIDgACAAIAggAyAHQQN0aikDABBHDQIaAkAgBb1C////////////AINCgICAgICAgPj/AFYNACAIKwMAIga9Qv///////////wCDQoCAgICAgID4/wBWBEAgBiEFDAELIAQEQCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9g78gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFDAELIAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsgBiAFvUL///////////8Ag0KAgICAgICA+P8AWBsgBr0gBb2EvyAFRAAAAAAAAAAAYiAGRAAAAAAAAAAAYnIbIQULIAdBAWohBwwBCwsgBb0CfyAFmUQA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DAELIAAgAkEIaiADIARsIAZBH3YQqwMNAAJAIARBAUcEQANAIANBAEwNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDKBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmwEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJsBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmwEhBgsgACABEAoLIAJBEGokACAGC5IEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFAwBCwJAIAQQECICDQAgBBAmDQBCgICAgOAAIQUgACAEQcgBIARBABASIggQCw0CIAgQEA0AIAgQJg0AIA0gBzcDCCANIAE3AwAgACAIIARBAiANEDUhBQwCC0KAgICAMCEKAkAgACABECsiDBALBEBCgICAgDAhBQwBCyAAEE4iBRALDQACQCAHEBAEQCANQX82AgAMAQsgACANIAcQxQFBAEgNAQsgDKciDikCBCEBIAAgBBArIgoQCw0AAkAgDSgCACIDRQ0AIAGnQf////8HcSEPAkAgAgRADAELIAqnIgIpAgRC/////weDIQsgDwRAIAFC/////weDIAt9IAtQrSIEfSEHIAOtIQgDQAJAIAQgCXwiASAHVQ0AIA4gAiABpxDLBCIDQQBIDQAgACAOIAmnIAMQmwEiARALDQUgACAFIAYgAUEAEKsBQQBIDQUgCyADrHwhCSAGQgF8IgYgCFINAQwECwsgBkL/////D4MhBgwBCyALUA0BCyAAIA4gCacgDxCbASIBEAsNASAAIAUgBiABQQAQqwFBAEgNAQsgACAMEAogACAKEAoMAgsgACAFEAogACAMEAogACAKEAoLQoCAgIDgACEFCyANQRBqJAAgBQvSAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQYkcQQAQFEKAgICA4AAhBwwBCwJAIAUQEA0AIAUQJg0AQoCAgIDgACEHIAAgBSAEIAVBABASIgYQCw0BAkAgBEHFAUcNACAAIAUQzARBAE4NACAAIAYQCgwCCyAGEBANACAGECYNACAAIAYgBUEBIAJBKGoQNSEHDAELIAIgACABECsiBjcDCEKAgICA4AAhByAGEAsNACACIAU3AxACQAJAAn8gBEHFAUcEQEKAgICAMCEBQQEMAQsgAEH6xQAQdCIBEAsNASACIAE3AxhBAgshAyAAIAApA0ggAyACQRBqEK8BIQUgACABEAogBRALRQ0BCyAAIAYQCgwBCyAAIAUgBEEBIAJBCGoQugIhByAAIAIpAwgQCgsgAkEwaiQAIAcL+QICBX8DfiMAQRBrIgUkAAJAIAAgARBhIgoQCwRAIAohAQwBCwJAIAAgAykDABCCBCIGBEBCgICAgOAAIQFCgICAgDAhCyAGQQBMDQEgAEG+3QBBABAUDAELQoCAgIDgACEBIAAgAykDABArIgsQCw0AIAunIgcoAgQhCCAFIAqnIgkoAgRB/////wdxIgZBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIgwQEA0AIAAgBUEMaiAMIAZBABBjDQELIAYgCEH/////B3EiBmshAgJAAkACQAJAIAQOAgABAgsgBSgCDCEDDAILIAUoAgwiAyACSiEEQoCAgIAQIQEgAyECIARFDQEMAgsgBSAFKAIMIAZrIgM2AgwgAyECC0KAgICAECEBIANBAEggAiADSHINAANAIAkgByADQQAgBhDCA0UEQEKBgICAECEBDAILIAIgA0chBCADQQFqIQMgBA0ACwsgACAKEAogACALEAoLIAVBEGokACABC68DAQV+IAEQEARAIAAQgQQhAQsgACABQTsgAUEAEBIiBRALBEAgBQ8LAkACQCAFECBFBEAgACAFEAogACABEI8DIgJFDQECfyAEQQBIBEAgAigCKEEYagwBCyACIARBA3RqQdgAagspAwAQDSEFCyAAIAVBAxBQIQEgACAFEAogARALDQECQCADIARBB0ZBA3RqKQMAIgUQEEUEQCAAIAUQKyIFEAsNASAAIAFBMyAFQQMQGRoLIARBB0YEQCADKQMAIQYjAEEQayICJABCgICAgDAhBQJAAkAgACAGQQAQ9QEiBhALBEBCgICAgDAhCAwBCyAAIAZB6gAgBkEAEBIiCBALDQAgABBOIgUQCw0AA0AgACAGIAggAkEMahCsASIJEAtFBEAgAigCDA0DIAAgBSAHIAkQbiEDIAdCAXwhByADQQBODQELCyAAIAZBARCwARoLIAAgBRAKQoCAgIDgACEFCyAAIAgQCiAAIAYQCiACQRBqJAAgBRALDQEgACABQTQgBUEDEBkaCyAAIAFBAEEAQQEQxgIgAQ8LIAAgARAKC0KAgICA4AAhAQsgAQuNAwMHfwF8AX4jAEEQayIFJAACQCAAIAEQYSIBEAsNAAJAAkAgACADKQMAECsiDRALDQAgDaciCigCBEH/////B3EhBiABpyILKAIEQf////8HcSEHAkAgBARAIAcgBmshBEF/IQggAkECSA0BIAAgBSADKQMIEEcNAiAFKwMAIgy9Qv///////////wCDQoCAgICAgID4/wBWDQEgBQJ/QQAgDEQAAAAAAAAAAGUNABogDCAEt2NFDQIgDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgQ2AgwMAQtBACEEIAVBADYCDCACQQJOBEAgACAFQQxqIAMpAwggB0EAEGMNAiAFKAIMIQQLIAcgBmshCUEBIQgLQX8hAyAJIARrIAhsQQBIIAYgB0tyDQEDQCALIAogBEEAIAYQwgNFBEAgBCEDDAMLIAQgCUYNAiAEIAhqIQQMAAsACyAAIAEQCiAAIA0QCkKAgICA4AAhAQwBCyAAIAEQCiAAIA0QCiADrSEBCyAFQRBqJAAgAQuGAQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELQoCAgIDgACEBAkAgACACQQxqIAMpAwAQwwENAEKAgICAMCEBIAIoAgwiA0EASA0AIAMgBKciBSgCBEH/////B3FPDQAgBSACQQxqENkBrSEBCyAAIAQQCgsgAkEQaiQAIAELTAEBfyACQQAgAkEAShshAiAAIAEQYSEBA0ACQCACIARGDQAgARALDQAgACABIAMgBEEDdGopAwAQDRDIAiEBIARBAWohBAwBCwsgAQu0AQIBfgF/IwBBEGsiAiQAAkAgACABEGEiBBALBEAgBCEBDAELAn5CgICAgOAAIAAgAkEMaiADKQMAEMMBDQAaAkAgAigCDCIDQQBOBEAgAyAEpyIFKQIEIgGnQf////8HcUkNAQsgAEEAQQAQ1wIMAQsgAAJ/IAFCgICAgAiDUEUEQCAFIANBAXRqLwEQDAELIAMgBWotABALQf//A3EQpwMLIQEgACAEEAoLIAJBEGokACABC6QBAgJ+AX8jAEEQayICJAACQCAAIAEQYSIEEAsEQCAEIQEMAQtCgICAgOAAIQECQCAAIAJBDGogAykDABDDAQ0AQoCAgIDAfiEBIAIoAgwiA0EASA0AIAMgBKciBikCBCIFp0H/////B3FPDQAgBUKAgICACINQRQRAIAYgA0EBdGozARAhAQwBCyADIAZqMQAQIQELIAAgBBAKCyACQRBqJAAgAQuRAgIBfwZ+IwBBIGsiBCQAIAAgBEEIakEAEEEaQoCAgIAwIQUCfgJAAkAgACADKQMAECkiBhALDQAgACAAIAZB8AAgBkEAEBIQlgUiBRALDQAgACAEIAUQQEEASA0AQgAhASAEKQMAIgdCACAHQgBVGyEIIAdCAX0hByACrCEJA0AgASAIUQ0CIAAgACAFIAEQYhA8IgoQCw0BIARBCGogChCNARogASAHWSECIAFCAXwhASABIAlZIAJyDQAgBEEIaiADIAGnQQN0aikDABCaAUUNAAsLIAAgBhAKIAAgBRAKIARBCGoQQ0KAgICA4AAMAQsgACAGEAogACAFEAogBEEIahA3CyEBIARBIGokACABC+sBAgN/AXwjAEEgayIEJAACfgJAIAAgBCACEEENACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv////8PWARAIAGnIgJB///DAE0NAQwECyAAIARBGGogARBHDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD//zBBZHINAyAHAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgK3Yg0DCyAFQQFqIQUgBCACEL4BRQ0BDAMLCyAEEDcMAgsgAEGJGBBpCyAEEENCgICAgOAACyEBIARBIGokACABC4oBAQJ/IwBBIGsiBCQAIAAgBEEIaiACEEEaIAJBACACQQBKGyECAn4DQCACIAVHBEACQCAAIARBBGogAyAFQQN0aikDABCSAkUEQCAEQQhqIAQvAQQQlAFFDQELIARBCGoQQ0KAgICA4AAMAwsgBUEBaiEFDAELCyAEQQhqEDcLIQEgBEEgaiQAIAELCQAgACABEM0ECx8AIAAgARDNBCIBEAsEfiABBSAAQQNBAiABpxsQMQsLgQEBAXwjAEEQayICJAACfkKAgICAECADKQMAIgEQjgFFDQAaQoCAgIDgACAAIAJBCGogARBHDQAaIAIrAwgiBL1CgICAgICAgPj/AINCgICAgICAgPj/AFIgBJwgBGFxIASZRP///////z9DZXGtQoCAgIAQhAshASACQRBqJAAgAQsmAEKAgICA4AAgACADKQMAENQFIgBBAEetQoCAgIAQhCAAQQBIGwsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDQBAsgACADKQMAEI4BRQRAQoCAgIAQDwsgACABIAIgAxDRBAsJACAAIAEQrQILxQECAX8BfiMAQRBrIgIkAAJ+IAAgARCtAiIBEAsEQCABDAELQQohBQJAAkAgBA0AIAMpAwAiBhAQDQAjAEEQayIDJABBfyEEAkAgACADQQxqIAYQwwENACADKAIMIgRBJWtBXEsNACAAQabwABBpQX8hBAsgA0EQaiQAIAQiBUEASA0BC0KAgICA4AAgACACQQhqIAEQWQ0BGiAAIAIrAwggBUEAQQAQywIMAQsgACABEApCgICAgOAACyEBIAJBEGokACABC8MBAgF+AXwjAEEQayICJAACQCAAIAEQrQIiBBALBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNAAJAAkAg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CyAAIAUQCkKAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRAKIAAgAUH/AEECIAJBEGoQxQIhBSAAIAIpAxAQCiAAIAIpAxgQCgsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhDFAiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBoRQ0AIAAgAUKAgICAMBDyASIGEAsEQCAGIQUMAQsgACACIAYQwgIhByAAIAYQCgJAIAcQCw0AIAAgASADIAIQuwIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAogBEEBaiEEDAELCyADRQ0AIAAgBxAKDAELIAchBQsgAkEQaiQAIAUL4AECA34BfyMAQRBrIgYkACABQQVGBEAgAikDECEDIAAgAikDGBD4ASEBIAYgAikDICIENwMIIAYCfiADEBAEQCAEEA0iAyABRQ0BGiAAIAMQkgFCgICAgOAADAELIAAgA0KAgICAMEEBIAZBCGoQIgsiAzcDACADEAsiAQRAIAYgABCRASIDNwMAC0KAgICAMCEEIAAgAiABQQN0aikDACIFEBAEfiADBSAAIAVCgICAgDBBASAGECIhBCAGKQMACxAKIAZBEGokACAEDwtB6/AAQbfjAEHX6QJBheQAEAAAC4EBAQN/AkAgAUEyED8iBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQISAAIAMpAxggAhAhIAAgAykDICACECEgACADKQMoIAIQISADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDvAwsLFgEBfyABQTIQPyICBEAgACACEK0FCwslAQF/IAFBMBA/IgMEQCAAIAMpAwAgAhAhIAAgAykDCCACECELCycBAX8gAUEwED8iAgRAIAAgAikDABAlIAAgAikDCBAlIAAgAhAfCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCFBSAAIAIpAwAQJSAAIAIQHwsLgAEBBX8gAUEqED8iBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACAD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KAIoIgNBAWo2AiggBCADQQN0aiAPNwMAQQALIQMgB0EQaiQAIAsgA0EASCIDcgRAQQJBBCADGwwECyAAIBEQCiAAIAAgD0IAEGIQPCIREAsNACAREPYBRQ0CIAAgAkHgAGogACABQdUAIAFBABASEK0BQQBODQELQoCAgIAwIQ9CgICAgDAhEgwGCyAAIAFB1QACfiAGIAIpA2AgBRCDAyIPQoCAgIAIfEL/////D1gEQCAPQv////8PgwwBCyAPuRAVCxBIIgNBAE4NACADQR52QQJxDAELQQALIQNCgICAgDAhD0KAgICAMCESIAMOBQEFAwUABQsLQQAhBUEAIQRCgICAgDAhD0KAgICAMCESA0AgAigCOCAESgRAIAAgAkEMaiACKAIUIARBA3RqKQMAIhYQ2gFBAEgNAyAAIBEQCiAAIAAgFkIAEGIQPCIREAsNAyAAIAIgACAWQdcAIBZBABASEK0BDQMCQCACKQMAIhAgBikCBEL/////B4MiAVUEQCACIAE3AwAgASEQDAELIBBCAFkNAEIAIRAgAkIANwMACyAAIBIQCiAAEE4iEhALDQMgACASQgAgERANIhEQbkEASA0DIAIoAgwiA0EBIANBAUsbIgOtIRpCASEBA0AgASAaUgRAIAAgFiABEGIiGBALDQUgGBAQRQRAIAAgGBA8IhgQCw0GCyAAIBIgASAYEG4hByABQgF8IQEgB0EATg0BDAULCyAAIBQQCiAAIBZBhwEgFkEAEBIiFBALDQMCQCAKBEAgACASIBogEEL/////D4MQbkEASA0FIAAgEiADQQFqrSAVEA0QbkEASA0FAkAgFBAQDQAgACASIANBAmqtIBQQDSIBEG5BAE4NACABIRQMBgsgAiASNwNoIAJCgICAgDA3A2AgACAPEAogACAAIBlBAiACQeAAakEAEJsDEDwhDwwBC0KAgICAMCEBIBQQEEUEQCAAIBQQKSIBEAsNBQsgAiAXNwOIASACIAE3A4ABIAIgEjcDeCACIBU3A2ggAiARNwNgIAIgEEL/////D4M3A3AgACAPEAogACACQeAAahCPBSEPIAAgARAKCyAPEAsNAyAFrCAQVwRAIAJByABqIgMgBiAFIBCnEFcaIAMgDxCaARogEacpAgRC/////weDIBB8pyEFCyAEQQFqIQQMAQsLIAJByABqIgMg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ACAAC0ABAX4jAEEQayICJABCgICAgOAAIQQgACACQQhqIAMpAwAQwgFFBEAgACABIAIpAwgQjAMhBAsgAkEQaiQAIAQLBABCAAvRAgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQRBAiEHIANBEGohAQJ/AkACQCAAKAI8IAFBAiADQQxqEAMQ8wVFBEADQCAEIAMoAgwiBUYNAiAFQQBIDQMgASAFIAEoAgQiCEsiBkEDdGoiCSAFIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAQgBWshBCAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMQ8wVFDQALCyAEQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiABKAIEawshBCADQSBqJAAgBAsFACAAnwudAQMCfAF/AX5EAAAAAAAA4D8gAKYhAiAAvUL///////////8AgyIEvyEBAkAgBEIgiKciA0HB3JiEBE0EQCABEKUCIQEgA0H//7//A00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQigYhAAsgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDaAiEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABELAEQQNxDgMAAQIDCyABKwMAIAErAwhBARDaAiEADAMLIAErAwAgASsDCBDbAiEADAILIAErAwAgASsDCEEBENoCmiEADAELIAErAwAgASsDCBDbApohAAsgAUEQaiQAIAAL6AQCA38HfiMAQSBrIgUkAEKAgICA4AAhDQJAIAAgASAEQR9qEG0iARALDQBCgICAgDAhCAJAIABBHBBqIgZFBEBCgICAgDAhC0KAgICAMCEKDAELIAZBBGoQbyAGIARBAXZBAXE2AgAgASAGEIsBIAZBATYC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ciB8fABwcm94eTogcHJvcGVydHkgbm90IHByZXNlbnQgaW4gdGFyZ2V0IHdlcmUgcmV0dXJuZWQgYnkgbm9uIGV4dGVuc2libGUgcHJveHkAcmV2b2tlZCBwcm94eQBQcm94eQBhZGRfcHJvcGVydHkAcHJveHk6IGNhbm5vdCBzZXQgcHJvcGVydHkAbm8gc2V0dGVyIGZvciBwcm9wZXJ0eQB2YWx1ZSBoYXMgbm8gcHJvcGVydHkAY291bGQgbm90IGRlbGV0ZSBwcm9wZXJ0eQBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAaGFzT3duUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWxldGVQcm9wZXJ0eQBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AEpTX0RlZmluZVByb3BlcnR5ACFtci0+ZW1wdHkAaW5maW5pdHkASW5maW5pdHkAb3V0IG9mIG1lbW9yeQB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQBHZW5lcmFsX0NhdGVnb3J5AGV2ZXJ5AGFueQBhcHBseQAnJXMnIGlzIHJlYWQtb25seQBleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBzdGlja3kAc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAanNfZ2V0X2F0b21faW5kZXgAaW52YWxpZCBhcnJheSBpbmRleABvdXQtb2YtYm91bmQgbnVtZXJpYyBpbmRleABKU19BdG9tSXNBcnJheUluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AHBvdwBub3cAc3RhY2sgb3ZlcmZsb3cAbXVzdCBiZSBjYWxsZWQgd2l0aCBuZXcAaXNWaWV3AERhdGFWaWV3AHJhdwAldQBjbGFzcyBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmdW5jdGlvbiBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABsZXhpY2FsIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGR1cGxpY2F0ZSBhcmd1bWVudCBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQAaW1wb3J0Lm1ldGEgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbnRleHQASlNfRnJlZUNvbnRleHQASlNDb250ZXh0AGpzX21hcF9pdGVyYXRvcl9uZXh0AGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dAB1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dAB0dABleHBvcnRlZCB2YXJpYWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0AHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdAB0ZXN0AGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAZW5jb2RlVVJJQ29tcG9uZW50AGRlY29kZVVSSUNvbXBvbmVudAB1bmV4cGVjdGVkIGVuZCBvZiBjb21tZW50AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABwYXJzZUludABkdXBsaWNhdGUgZGVmYXVsdABzcGxpdABleHBlY3RpbmcgaGV4IGRpZ2l0AHRyaW1SaWdodAByZWR1Y2VSaWdodAB1bnNoaWZ0AHRyaW1MZWZ0AGludmFsaWQgb2Zmc2V0AGludmFsaWQgYnl0ZU9mZnNldABnZXRUaW1lem9uZU9mZnNldAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJveHk6IGluY29uc2lzdGVudCBzZXQAZmluZF9qdW1wX3RhcmdldABleHBlY3RpbmcgdGFyZ2V0AGludmFsaWQgZGVzdHJ1Y3R1cmluZyB0YXJnZXQAcHJveHk6IGluY29uc2lzdGVudCBnZXQAV2Vha1NldABjb25zdHJ1Y3QASlNfRnJlZUF0b21TdHJ1Y3QAdXNlIHN0cmljdABSZWZsZWN0AHJlamVjdABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABpbnZhbGlkIGJyYW5kIG9uIG9iamVjdABvcGVyYW5kICdwcm90b3R5cGUnIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3QAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAdG9vIG1hbnkgaW1icmljYXRlZCBxdWFudGlmaWVycwB1bmljb2RlX3Byb3Bfb3BzAGFjb3MAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAGJ5dGVjb2RlIGZ1bmN0aW9ucwBDIGZ1bmN0aW9ucwBwcm94eTogaW5jb25zaXN0ZW50IHByZXZlbnRFeHRlbnNpb25zAFNjcmlwdF9FeHRlbnNpb25zAGF0b21zAHByb3h5OiBwcm9wZXJ0aWVzIG11c3QgYmUgc3RyaW5ncyBvciBzeW1ib2xzAGdldE93blByb3BlcnR5U3ltYm9scwByZXNvbHZlX2xhYmVscwBKU19FdmFsVGhpcwBzdHJpbmdzAGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwB2YWx1ZXMAc2V0TWludXRlcwBnZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAZ2V0VVRDTWludXRlcwB0b28gbWFueSBjYXB0dXJlcwAgIHNoYXBlcwBnZXRPd25Qcm9wZXJ0eU5hbWVzAGdjX2ZyZWVfY3ljbGVzAGFkZF9ldmFsX3ZhcmlhYmxlcwByZXNvbHZlX3ZhcmlhYmxlcwB0b28gbWFueSBsb2NhbCB2YXJpYWJsZXMAdG9vIG1hbnkgY2xvc3VyZSB2YXJpYWJsZXMAY29tcGFjdF9wcm9wZXJ0aWVzACAgcHJvcGVydGllcwBkZWZpbmVQcm9wZXJ0aWVzAGVudHJpZXMAZnJvbUVudHJpZXMAdG9vIG1hbnkgcmFuZ2VzAGluY2x1ZGVzAHNldE1pbGxpc2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAGdldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAGdldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBnZXRVVENTZWNvbmRzAGl0YWxpY3MAYWJzAHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzACUuKnMAICglcwBzZXQgJXMAZ2V0ICVzACAgICBhdCAlcwBub3QgYSAlcwB1bnN1cHBvcnRlZCBrZXl3b3JkOiAlcwBzdWJzdHIAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAc3VwZXIoKSBpcyBvbmx5IHZhbGlkIGluIGEgZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3RvcgBwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBub3QgYSBjb25zdHJ1Y3RvcgBBcnJheSBJdGVyYXRvcgBTZXQgSXRlcmF0b3IATWFwIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBjYW5ub3QgaW52b2tlIGEgcnVubmluZyBnZW5lcmF0b3IAbm90IGEgZ2VuZXJhdG9yAEFzeW5jR2VuZXJhdG9yAHN5bnRheCBlcnJvcgBTeW50YXhFcnJvcgBFdmFsRXJyb3IASW50ZXJuYWxFcnJvcgBBZ2dyZWdhdGVFcnJvcgBUeXBlRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBVUklFcnJvcgBmbG9vcgBmb250Y29sb3IAYW5jaG9yAGZvcgBrZXlGb3IAZXhwZWN0aW5nIHN1cnJvZ2F0ZSBwYWlyAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBnZXR0ZXIgb3Igc2V0dGVyAGludmFsaWQgc2V0dGVyAGludmFsaWQgZ2V0dGVyAGZpbHRlcgBtaXNzaW5nIGZvcm1hbCBwYXJhbWV0ZXIAInVzZSBzdHJpY3QiIG5vdCBhbGxvd2VkIGluIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBvciBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcgBpbnZhbGlkIGNoYXJhY3RlcgB1bmV4cGVjdGVkIGNoYXJhY3RlcgBwcml2YXRlIGNsYXNzIGZpZWxkIGZvcmJpZGRlbiBhZnRlciBzdXBlcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAJ2xldCcgaXMgbm90IGEgdmFsaWQgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBvdGhlcgBhdG9tMV9pc19pbnRlZ2VyICYmIGF0b20yX2lzX2ludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBudW1iZXIAbm90IGEgbnVtYmVyAGxpbmVOdW1iZXIAbWFsZm9ybWVkIHVuaWNvZGUgY2hhcgBjbGVhcgBzZXRZZWFyAGdldFllYXIAc2V0RnVsbFllYXIAZ2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABpdGVyYXRvcl9jbG9zZV9yZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBhd2FpdCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AeWllbGQgaW4gZGVmYXVsdCBleHByZXNzaW9uAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ30nIGFmdGVyIHRlbXBsYXRlIGV4cHJlc3Npb24AdG9QcmVjaXNpb24AYXNpbgBqb2luAG1pbgBjb3B5V2l0aGluAHRlbXBsYXRlIGxpdGVyYWwgY2Fubm90IGFwcGVhciBpbiBhbiBvcHRpb25hbCBjaGFpbgBjaXJjdWxhciBwcm90b3R5cGUgY2hhaW4AYXNzaWduAGlzRnJvemVuAG1hcmtfY2hpbGRyZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBpbXVsAG5vdCBhIHN5bWJvbABTeW1ib2wAUmVnRXhwIGV4ZWMgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsAHBhcmVudCBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3Qgb3IgbnVsbABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgbnVsbABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwATnVsbABmaWxsAG5ldyBBcnJheUJ1ZmZlciBpcyB0b28gc21hbGwAVHlwZWRBcnJheSBsZW5ndGggaXMgdG9vIHNtYWxsAGNhbGwAZG90QWxsAG1hdGNoQWxsAHJlcGxhY2VBbGwAY2VpbAB1cGRhdGVfbGFiZWwAYmNfYnVmW3Bvc10gPT0gT1BfbGFiZWwAZXZhbABpbnZhbGlkIG51bWJlciBsaXRlcmFsAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwASlNfU2V0UHJvcGVydHlJbnRlcm5hbABKU19HZXRPd25Qcm9wZXJ0eU5hbWVzSW50ZXJuYWwAX19KU19FdmFsSW50ZXJuYWwAdG9FeHBvbmVudGlhbABzZWFsAGdsb2JhbABibGluawBfX2RhdGVfY2xvY2sAc3RhY2sAbHJlX2V4ZWNfYmFja3RyYWNrAHMtPmlzX3dlYWsAaQBzZXRNb250aABnZXRNb250aABzZXRVVENNb250aABnZXRVVENNb250aABpbnZhbGlkIGtleXdvcmQ6IHdpdGgAc3RhcnRzV2l0aABlbmRzV2l0aABwcm9wID09IEpTX0FUT01fbGVuZ3RoAGludmFsaWQgYXJyYXkgbGVuZ3RoAGludmFsaWQgYXJyYXkgYnVmZmVyIGxlbmd0aABpbnZhbGlkIGxlbmd0aABpbnZhbGlkIGJ5dGVMZW5ndGgATWF0aABwdXNoAGFjb3NoAEpTX1Jlc2l6ZUF0b21IYXNoAGFzaW5oAGF0YW5oAGJyZWFrIG11c3QgYmUgaW5zaWRlIGxvb3Agb3Igc3dpdGNoAG1hdGNoAGNhdGNoAHNlYXJjaABmb3JFYWNoAGxvZwBBcnJheSB0b28gbG9uZwBzdHJpbmcgdG9vIGxvbmcAQXJyYXkgbG9vIGxvbmcAc3Vic3RyaW5nAGNhbm5vdCBjb252ZXJ0IHN5bWJvbCB0byBzdHJpbmcAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAG5vdCBhIHN0cmluZwBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAHRvU3RyaW5nAHRvRGF0ZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9UaW1lU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0dNVFN0cmluZwBKU1N0cmluZwB0b0lTT1N0cmluZwB0b1VUQ1N0cmluZwBkdXBsaWNhdGUgaW1wb3J0IGJpbmRpbmcAaW52YWxpZCBpbXBvcnQgYmluZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAGRpZmYgPT0gKGludDhfdClkaWZmAGRpZmYgPT0gKGludDE2X3QpZGlmZgBocmVmAGdjX2RlY3JlZgBmcmVlX3Zhcl9yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9nbG9iYWxfcmVmAHJlc2V0X3dlYWtfcmVmAGRlbGV0ZV93ZWFrX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBpbmRleE9mAGxhc3RJbmRleE9mAHZhbHVlT2YAc2V0UHJvdG90eXBlT2YAZ2V0UHJvdG90eXBlT2YAaXNQcm90b3R5cGVPZgAlLipmAGZvbnRzaXplAG5ld19zaXplIDw9IHNoLT5wcm9wX3NpemUAZGVzY3IgPCBydC0+YXRvbV9zaXplAGF0b20gPCBydC0+YXRvbV9zaXplAGNvbXB1dGVfc3RhY2tfc2l6ZQBuIDwgYnVmX3NpemUAbm9ybWFsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAFByb21pc2UAdG9Mb3dlckNhc2UAdG9Mb2NhbGVMb3dlckNhc2UAdG9VcHBlckNhc2UAdG9Mb2NhbGVVcHBlckNhc2UAaWdub3JlQ2FzZQBsb2NhbGVDb21wYXJlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJvdG90eXBlAHByb3h5OiBiYWQgcHJvdG90eXBlAG5vdCBhIHByb3RvdHlwZQBpbnZhbGlkIG9iamVjdCB0eXBlAHVuZXNjYXBlAG5vbmUAcmVzdCBlbGVtZW50IG11c3QgYmUgdGhlIGxhc3Qgb25lAG11bHRpbGluZQAgIHBjMmxpbmUAc29tZQBKU19GcmVlUnVudGltZQBKU1J1bnRpbWUAc2V0VGltZQBnZXRUaW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBpbnZhbGlkIGNsYXNzIHJhbmdlAG1lc3NhZ2UAYXN5bmNfZnVuY19mcmVlAGludmFsaWQgbHZhbHVlIGluIHN0cmljdCBtb2RlAGludmFsaWQgdmFyaWFibGUgbmFtZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQB1bmljb2RlACAgYnl0ZWNvZGUASlNGdW5jdGlvbkJ5dGVjb2RlAHNraXBfZGVhZF9jb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW1wb3J0Lm1ldGEgb25seSB2YWxpZCBpbiBtb2R1bGUgY29kZQBmcm9tQ2hhckNvZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAHJlZHVjZQBzb3VyY2UAJ3RoaXMnIGNhbiBiZSBpbml0aWFsaXplZCBvbmx5IG9uY2UAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBpbnZhbGlkIFVURi04IHNlcXVlbmNlAGNpcmN1bGFyIHJlZmVyZW5jZQBzbGljZQBzcGxpY2UAcmFjZQByZXBsYWNlACUrLiplAHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAG1hcF9kZWNyZWZfcmVjb3JkAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAb2JqZWN0IG5lZWRzIHRvSVNPU3RyaW5nIG1ldGhvZAAnc3VwZXInIGlzIG9ubHkgdmFsaWQgaW4gYSBtZXRob2QAZnJvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZABpbnRlcnJ1cHRlZAAlcyBvYmplY3QgZXhwZWN0ZWQAaWRlbnRpZmllciBleHBlY3RlZABieXRlY29kZSBmdW5jdGlvbiBleHBlY3RlZABzdHJpbmcgZXhwZWN0ZWQAZnJvbSBjbGF1c2UgZXhwZWN0ZWQAZnVuY3Rpb24gbmFtZSBleHBlY3RlZAB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAG1ldGEgZXhwZWN0ZWQAcmVqZWN0ZWQAbWVtb3J5IGFsbG9jYXRlZABtZW1vcnkgdXNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGFsbFNldHRsZWQAZnVsZmlsbGVkAGNhbm5vdCBiZSBjYWxsZWQAaXNTZWFsZWQAIXNoLT5pc19oYXNoZWQAdmFyX3JlZi0+aXNfZGV0YWNoZWQAQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQAYWRkACUrMDdkACUwNGQAJTAyZCUwMmQAJTAyZC8lMDJkLyUwKmQAJS4zcyAlLjNzICUwMmQgJTAqZAA6JWQAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZABzYwBqc19kZWZfbWFsbG9jAHRydW5jAGdjAGV4ZWMAL3RtcC9xdWlja2pzL3F1aWNranMuYwAvdG1wL3F1aWNranMvbGlicmVnZXhwLmMAL3RtcC9xdWlja2pzL2xpYnVuaWNvZGUuYwBzdWIAcHJvbWlzZV9yZWFjdGlvbl9qb2IAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgByd2EAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQAQllURVNfUEVSX0VMRU1FTlQAJTAyZDolMDJkOiUwMmQgR01UAEpTX1ZBTFVFX0dFVF9UQUcoc2YtPmN1cl9mdW5jKSA9PSBKU19UQUdfT0JKRUNUAHZhcl9raW5kID09IEpTX1ZBUl9QUklWQVRFX1NFVFRFUgBNQVhfU0FGRV9JTlRFR0VSAE1JTl9TQUZFX0lOVEVHRVIAaXNOYU4ARGF0ZSB2YWx1ZSBpcyBOYU4AdG9KU09OAEVQU0lMT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcASU5GADAxMjM0NTY3ODlBQkNERUYAU0laRQBNQVhfVkFMVUUATUlOX1ZBTFVFAE5BTUUAZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9HTE9CQUwgfHwgZXZhbF90eXBlID09IEpTX0VWQUxfVFlQRV9NT0RVTEUAcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfSlNfT0JKRUNUIHx8IHAtPmdjX29ial90eXBlID09IEpTX0dDX09CSl9UWVBFX0ZVTkNUSU9OX0JZVEVDT0RFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAVVRDADxpbnB1dD4APGluaXRTY3JpcHQ+ADxldmFsU2NyaXB0PgA8c2V0PgA8YW5vbnltb3VzPgA8Y29tbUZ1bj4APGNhbGxFeHRlcm5hbEZ1bmN0aW9uPgA8bnVsbD4AJnF1b3Q7AHNldFVpbnQ4AGdldFVpbnQ4AHNldEludDgAZ2V0SW50OABtYWxmb3JtZWQgVVRGLTgAcmFkaXggbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2AHNldFVpbnQxNgBnZXRVaW50MTYAc2V0SW50MTYAZ2V0SW50MTYAYXJnYyA9PSA1AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAGV4cG0xAGxzLT5hZGRyID09IC0xAHN0YWNrX2xlbiA+PSAxAHAtPnNoYXBlLT5oZWFkZXIucmVmX2NvdW50ID09IDEAc3RhY2tfbGVuID09IDEAanNfZnJlZV9zaGFwZTAAbG9nMTAATE4xMABwLT5yZWZfY291bnQgPiAwAHZhcl9yZWYtPmhlYWRlci5yZWZfY291bnQgPiAwAHN0YWNrX3NpemUgPiAwAGNwb29sX2lkeCA+PSAwAHJ0LT5hdG9tX2NvdW50ID49IDAAbHMtPnJlZl9jb3VudCA+PSAwAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABwLT5yZWZfY291bnQgPT0gMABjdHgtPmhlYWRlci5yZWZfY291bnQgPT0gMABzaC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHAtPm1hcmsgPT0gMAAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAChuZXdfaGFzaF9zaXplICYgKG5ld19oYXNoX3NpemUgLSAxKSkgPT0gMABpICE9IDAAc2l6ZSAhPSAwAF4kXC4qKz8oKVtde318LwA8LwBtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgBhc3luYyBmdW5jdGlvbiAqAAp9KQBsaXN0X2VtcHR5KCZydC0+Z2Nfb2JqX2xpc3QpAGogPT0gKHNoLT5wcm9wX2NvdW50IC0gc2gtPmRlbGV0ZWRfcHJvcF9jb3VudCkASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAYnl0ZWNvZGUgYnVmZmVyIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIHVuZGVyZmxvdyAob3A9JWQsIHBjPSVkKQBpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQAoPzopAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQAtXy4hfionKCkAIGFub255bW91cygAU3ltYm9sKABleHBlY3RpbmcgJ30nAGNsYXNzIGNvbnN0cnVjdG9ycyBtdXN0IGJlIGludm9rZWQgd2l0aCAnbmV3JwBleHBlY3RpbmcgJ2FzJwB1bmV4cGVjdGVkIHRva2VuIGluIGV4cHJlc3Npb246ICclLipzJwB1bmV4cGVjdGVkIHRva2VuOiAnJS4qcycAcmVkZWNsYXJhdGlvbiBvZiAnJXMnAGR1cGxpY2F0ZSBleHBvcnRlZCBuYW1lICclcycAY2lyY3VsYXIgcmVmZXJlbmNlIHdoZW4gbG9va2luZyBmb3IgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAQ291bGQgbm90IGZpbmQgZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycAY291bGQgbm90IGxvYWQgbW9kdWxlICclcycAY2Fubm90IGRlZmluZSB2YXJpYWJsZSAnJXMnAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAdW5zdXBwb3J0ZWQgcmVmZXJlbmNlIHRvICdzdXBlcicAaW52YWxpZCB1c2Ugb2YgJ3N1cGVyJwAnZm9yIGF3YWl0JyBsb29wIHNob3VsZCBiZSB1c2VkIHdpdGggJ29mJwBleHBlY3RpbmcgJyVjJwB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAaW52YWxpZCB1c2Ugb2YgJ2ltcG9ydCgpJwBleHBlY3RpbmcgJSUAOy8/OkAmPSskLCMAPSIAc2V0IABnZXQgAFtvYmplY3QgAGFzeW5jIGZ1bmN0aW9uIABib3VuZCAAJS4zcywgJTAyZCAlLjNzICUwKmQgAGFzeW5jIAA6IAAgICAgICAgICAgAAopIHsKAApKU09iamVjdCBjbGFzc2VzCgAlLTIwcyAlOHMgJThzCgAgICU1ZCAgJTIuMGQgJXMKACAgJTN1ICsgJS0ydSAgJXMKACAgbWFsbG9jX3VzYWJsZV9zaXplIHVuYXZhaWxhYmxlCgAlLTIwcyAlOGxsZAoAJS0yMHMgJThsbGQgJThsbGQKAF9fSlNfRnJlZVZhbHVlOiB1bmtub3duIHRhZz0lZAoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgZmFzdCBhcnJheSkKACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIG9iamVjdCkKACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYXRvbSkKACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGJsb2NrKQoAJS0yMHMgJThsbGQgJThsbGQgICglZCBvdmVyaGVhZCwgJTAuMWYgYXZlcmFnZSBzbGFjaykKACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIHN0cmluZykKACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIHNoYXBlKQoAUXVpY2tKUyBtZW1vcnkgdXNhZ2UgLS0gMS4wLjAgdmVyc2lvbiwgJWQtYml0LCBtYWxsb2MgbGltaXQ6ICVsbGQKCgBB4IMBCwGMAEHsgwELDY0AAAA6AAAAOwAAAI4AQYSEAQs9jwAAADwAAAA9AAAAkAAAADwAAAA9AAAAkQAAADwAAAA9AAAAkgAAADwAAAA9AAAAkwAAADoAAAA7AAAAkwBBzIQBCw2WAAAAPAAAAD0AAACMAEHkhAEL2QKXAAAAPgAAAD8AAACXAAAAQAAAAEEAAACXAAAAQgAAAEMAAACXAAAARAAAAEUAAACYAAAAQAAAAEEAAACZAAAARgAAAEcAAACaAAAASAAAAAAAAACbAAAASQAAAAAAAACcAAAASQAAAAAAAACdAAAASgAAAEsAAACeAAAASgAAAEsAAACfAAAASgAAAEsAAACgAAAASgAAAEsAAAChAAAASgAAAEsAAACiAAAASgAAAEsAAACjAAAASgAAAEsAAACkAAAASgAAAEsAAAClAAAASgAAAEsAAACmAAAASgAAAEsAAACnAAAATAAAAE0AAACoAAAATAAAAE0AAACpAAAATAAAAE0AAACqAAAATAAAAE0AAACrAAAATgAAAE8AAACsAAAATgAAAE8AAACtAAAAUAAAAFEAAACuAAAAUAAAAFEAAACvAAAAUgAAAFMAAACwAAAAVAAAAFUAQcyHAQsBVgBB3IcBCw1XAAAAAAAAAFgAAABZAEGIiAELAVoAQZSIAQsJWwAAAFwAAABdAEGwiAEL0wKRJgAA4AAAANMJAAD4AAAAwA4AADAAAACJIgAAEAAAAIgqAABYAAAAjAAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAABTAADAUwAAcFQAAMBUAAAAVQAAIFUAAAwLBQQCAgAAsgAAAGcAAABoAAAAswAAAGkAAABqAAAAtAAAAGkAAABqAAAAtQAAAEAAAABBAAAAtgAAAGsAAABsAAAAtwAAAGsAAABsAAAALwAAAG0AAABuAAAAuAAAAEAAAABBAAAAuQAAAG8AAABwAAAAAAAAAKsVAADcFQAA5xUAAJ8VAADSFQAA9hUAALUVAADDFQAAY29weVdpdGhpbgBlbnRyaWVzAGZpbGwAZmluZABmaW5kSW5kZXgAZmxhdABmbGF0TWFwAGluY2x1ZGVzAGtleXMAdmFsdWVzAAAAAAABAQICAgMAQZCLAQuVKG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAAAAAAQAAAAUAARQFAAEVBQABFQUAARcFAAEXAQABAAEAAQABAAEAAQABAAEAAQABAAEAAgABBQMAAQoBAQAAAQIBAAEDAgABAQIAAQIDAAECBAABAwYAAQIDAAEDBAABBAUAAQMDAAEEBAABBQUAAQICAAEEBAABAwMAAQMDAAEEBAABBQUAAwIBDQMBAQ0DAQANAwIBDQMCAA0DAAENAwMBCgEBAAABAAAAAQECAAEAAAABAgIAAQIAAAEBAAABAQAABgAAGAUBAQ8DAgEKAQIBAAEBAQABAQEABQABFwUAARcFAAEXBQEAFwUBABcFAgAXAQIDAAEDAAAGAAAYBgAAGAYBABgFAQEXBQECFwUCABcBAgEAAQMAAAEDAQABAgEAAQICAAEDAAABAwEAAQQAAAUCARcFAQEXAQICAAECAQABAgIAAQMCAAEDAgACAwMFBgIBGAIDAQUGAgIYBgMDGAMAARADAQAQAwEBEAMAAREDAQARAwEBEQMAARIDAQASAwEBEgMAABADAAEQAwEAEAMBABADAAESAwEAEgMBABIDAAAQBQEAFgUBABYFAAAWBQABFgUAABYBAQAAAQEBAAEBAQABAgIACgEAGgoCARoKAQAaCgEAGgoBABoKAQAaBwACGQcAAhkHAAIZBQACFwEBAQABAQMAAQEDAAEBAwACAwUFAQEBAAEBAgABAwAAAQQEAAEEBAACBAUFAQAAAAEBAgABAQIAAQECAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEBAgACAAAHAgAABwIBAAcBAQEAAQEBAAEBAQABAgEABQABFwECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAQEAAQAAAAMAAAoDAAAKBQAAFgcAARkHAAEZBwEAGQcAARkLAAIbBwACGQcAAhkHAQEZBwECGQcBARkFAQETBQAAEwEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQIAAQYDAAELAgABCAIAAQgBAAEAAgABBwIBAAcCAQEHAQABAgEAAQIBAAECAQABAgEBAAIBAQACAQEAAgEBAAIBAQECAQEBAgEBAQIBAQECAQABAwEAAQMBAAEDAQABAwEBAAMBAQADAQEAAwEBAAMBAQEDAQEBAwEBAQMBAQEDAQABBAEAAQQBAAEEAQABBAEBAAQBAQAEAQEABAEBAAQBAQEEAQEBBAEBAQQBAQEEAQEBAAIBAAkCAQAJAgAACQMAAAwBAQEOAQEBDgEBAQ4BAQEOAQEBAAEBAQABAQEAAQEBAHEAAAByAAAAcwAAAG4AZgBpAG4AaQB0AHkADQAQAC0AMQAAAFskAAADAAAAAAAAAHQAAABCEgAAAQEAAHUAAAAAAAAAqisAAAEBAAB2AAAAAAAAABUgAAABAgEAdwAAAAAAAADJJQAAAQICAHcAAAAAAAAAaSYAAAECBAB3AAAAAAAAAC0fAAABAggAdwAAAAAAAAB1KgAAAQIQAHcAAAAAAAAAVwYAAAECIAB3AAAAAAAAALIxAAADAAAAAQAAADAAAABNKAAAAwAAAAIAAAB4AAAAegoAAAMAAAABAAAAeQAAACUiAAADAAAAAAAAAHoAAABsMwAAAwAAAAIAAAB7AAAA5zIAAAMAAAABAAAAfAAAANUyAAADAAAAAQAAAH0AAAD2MgAAAwAAAAEAAAB+AAAAjDIAAAMAAAACAAAAfwAAAJsyAAABAQAAgAAAAAAAAAAMCgAAAwAAAAAMAACBAAAABjMAAAEDAAAaFQAAAAAAANc0AAADCAAAwFIAAAMAAABQJQAAAwAAAAIAAACCAAAAXgYAAAMAAAADAAAAgwAAAAYzAAABAwAA1zQAAAAAAABiKQAAAwAAAAIAAACEAAAAUw0AAAMAAAACAQAAhQAAAKoNAAADAAAAAQEAAIYAAAAOFAAAAwAAAAEBAACHAAAAByUAAAMAAAABAQAAiAAAAFMZAAADAAAAAAEAAIkAAABWJAAAAQIAAIoAAAAAAAAAeCEAAAMAAAABAQAAiwAAAEgSAAADAAQAAAEAAIwAAAAQDwAAAwAAAAABAACMAAAASRMAAAMACAAAAQAAjAAAAKwyAAADCQAASRMAAP////8GMwAAAQMAAEMaAAAAAAAAPzEAAAMAAQABAQAAhQAAAA4UAAADAAEAAQEAAIcAAAAHJQAAAwABAAEBAACIAAAAUxkAAAMAAQAAAQAAiQAAAFYkAAABAgEAigAAAAAAAAB4IQAAAwABAAEBAACLAAAASBIAAAMAAQAAAQAAjAAAABAPAAADCQAASBIAAP////+sMgAAAwkAAEgSAAD/////SRMAAAMACQAAAQAAjAAAAAYzAAABAwAAsg0AAAAAAABTDQAAAwACAAIBAACFAAAAqg0AAAMAAgABAQAAhgAAAA4UAAADAAIAAQEAAIcAAAAHJQAAAwACAAEBAACIAAAABjMAAAEDAAA/GgAAAAAAAD8xAAADAAMAAQEAAIUAAAAOFAAAAwADAAEBAACHAAAAByUAAAMAAwABAQAAiAAAAAYzAAABAwAArg0AAAAAAAAMCgAAAwAAAAAMAACNAAAABjMAAAEDAAANFQAAAAAAAAwKAAADAAEAAAwAAI0AAAAGMwAAAQMAAAAVAAAAAAAAmzIAAAEBAACAAAAAAAAAAI0dAAADAAAAAgAAAI4AAABrIQAAAwAAAAEAAACPAAAATwYAAAMAAAABAAAAkAAAAAYzAAABAwAAhSUAAAAAAABsJAAAAwAAAAEBAACRAAAA5Q0AAAMAAQABAQAAkQAAACkfAAADAAAAAQEAAJIAAADUMAAAAwABAAEBAACSAAAAIAYAAAMAAgABAQAAkgAAADgsAAADAAAAAQAAAJMAAACbMgAAAQEAAIAAAAAAAAAABjMAAAEDAAB2GwAAAAAAAL4yAAADAAAAAAAAAJQAAAAMCgAAAwAAAAEBAACVAAAAcxoAAAMAAQABAQAAlQAAACoIAAADAAIAAQEAAJUAAAAMCgAAAwAAAAEBAACWAAAAcxoAAAMAAQABAQAAlgAAACoIAAADAAIAAQEAAJYAAAAGMwAAAQMAAIMVAAAAAAAABjMAAAEDAABKGwAAAAAAALQjAAADAAAAAAAAAJcAAAAlIgAAAwATAAABAACYAAAAGzMAAAMAAAABAAAAmQAAAJ4iAAADAAMAAAEAAJgAAAB9IgAAAwkAAJ4iAAD/////kiIAAAMAIwAAAQAAmAAAAC4iAAADABEAAAEAAJgAAABOIgAAAwASAAABAACYAAAAbiIAAAMAMwAAAQAAmAAAADsiAAADADEAAAEAAJgAAABbIgAAAwAyAAABAACYAAAADg0AAAMAAAAAAAAAmgAAAKMmAAADAAAAAAAAAJcAAABhGQAAAwABAQABAACbAAAAdRkAAAMAAQAAAQAAmwAAAJAZAAADAAAAAAEAAJsAAABeIAAAAwARAAABAACbAAAAcyAAAAMAEAAAAQAAmwAAAB0lAAADACEAAAEAAJsAAAAwJQAAAwAgAAABAACbAAAAfxAAAAMAMQAAAQAAmwAAAJQQAAADADAAAAEAAJsAAABaEgAAAwBBAAABAACbAAAAcxIAAAMAQAAAAQAAmwAAAMcTAAADAFEAAAEAAJsAAADgEwAAAwBQAAABAACbAAAAhhMAAAMAYQAAAQAAmwAAAKkTAAADAGAAAAEAAJsAAAAcBwAAAwBxAAABAACbAAAAIwcAAAMAcAAAAQAAmwAAAJsmAAADAAAAAQAAAJwAAAB2EwAAAwBxBgEBAACdAAAAlhMAAAMAcAYBAQAAnQAAALwTAAADAHEFAgEAAJ0AAADSEwAAAwBwBQIBAACdAAAATxIAAAMAcQQDAQAAnQAAAGUSAAADAHAEAwEAAJ0AAAB2EAAAAwBxAwQBAACdAAAAiBAAAAMAcAMEAQAAnQAAABUlAAADADECAQEAAJ0AAAAlJQAAAwAwAgEBAACdAAAAVSAAAAMAMQECAQAAnQAAAGcgAAADADABAgEAAJ0AAABZGQAAAwAAAAEAAACeAAAAaRkAAAMAMQADAQAAnQAAAIEZAAADADAAAwEAAJ0AAADVNAAAAwAAAAEAAACfAAAAU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGwswELJEphbkZlYk1hckFwck1heUp1bkp1bEF1Z1NlcE9jdE5vdkRlYwBB4LMBC9YMHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAANAgAAAMAAAAAAAAAoAAAAFAlAAADAAAAAQAAAKEAAACNNwAAAwAAAAcAAACiAAAAmpucnZ6goaKtrq+fAAAAACUiAAADAAAAAAAAAKMAAAA/KAAAAwMAAPkVAAAAAAAAhykAAAMDAADVQQAAAAAAAA4lAAADAAAAAgAAAKQAAADLIwAAAwAAAAEBAAClAAAAvCMAAAMAAAACAAAApgAAAJwFAAADAAAAAwEAAKcAAAA4EwAAAwAAAAIAAACoAAAAnBIAAAMAAAABAAAAqQAAANURAAADAAAAAQAAAKoAAAAQDwAAAwAAAAEBAACrAAAASBIAAAMAAQABAQAAqwAAAEkTAAADAAIAAQEAAKsAAACCKAAAAwAAAAEBAACsAAAAfhEAAAMAAAABAQAArQAAAHAUAAADAAAAAgEAAK4AAACgEAAAAwAAAAEAAACvAAAAAxIAAAMAAAACAAAAsAAAADsdAAADAAAAAgAAALEAAAAQIAAAAwAAAAEBAACyAAAAZSQAAAMAAQABAQAAsgAAAPowAAADAAAAAQEAALMAAABCHQAAAwABAAEBAACzAAAAaxAAAAMAAAABAAAAtAAAAFETAAADAAAAAQAAALUAAAAlIgAAAwAAAAAAAAC2AAAAbiIAAAMAAAAAAAAAtwAAALQjAAADAAAAAAAAALgAAABWBQAAAwAAAAEAAAC5AAAA2iMAAAMAAAABAAAAugAAAPIoAAADAAAAAQAAALsAAACCMgAAAQEAALwAAAC9AAAAcTIAAAMAAAACAQAAvgAAAE8yAAADAAEAAgEAAL4AAABgMgAAAwAAAAEBAAC/AAAAPjIAAAMAAQABAQAAvwAAACgfAAADAAAAAQAAAMAAAAAkBgAAAwAAAAIBAADBAAAAMy0AAAMAAAABAAAAwgAAACUiAAADAAAAAAAAAMMAAABXMwAAAwAAAAEAAADEAAAARCgAAAEBAADFAAAAAAAAADEZAAABAQAAxgAAAAAAAACsMgAAAwAAAAAAAACUAAAA6w4AAAMAAAABAAAAxwAAABoGAAADAAAAAQEAAMgAAAB9JgAAAwABAAEBAADIAAAAeCEAAAMAAgABAQAAyAAAADMaAAADAAMAAQEAAMgAAAAPFwAAAwAEAAEBAADIAAAAoysAAAMAAAABAQAAyQAAAM8MAAADAAEAAQEAAMkAAADnHgAAAwAAAAEAAADKAAAALi0AAAMAAAABAQAAywAAAIIHAAADAAEAAQEAAMsAAACgIwAAAwAAAAEAAADMAAAAqCMAAAMAAAABAAAAzQAAAG0TAAADAAAAAQAAAM4AAADaHAAAAwAAAAEBAADPAAAAJSIAAAMAAAAAAAAA0AAAAG4iAAADAAEAAAEAAM8AAAD2GQAAAwAAAAABAADRAAAAGCEAAAMAAAABAQAA0gAAAN0MAAADAAEAAAEAANEAAADbDAAAAwABAAEBAADSAAAASCUAAAMAAAAAAAAA0wAAAKoKAAADAAAAAQAAANQAAAArLAAAAwAAAAIBAADVAAAAMSwAAAMAAQACAQAA1QAAAOMcAAADAAAAAgAAANYAAAA3GgAAAwABAAEBAADXAAAA1A4AAAMAAAAAAQAA1wAAAEgSAAADAAEAAAEAACkAAACsMgAAAwkAAEgSAAD/////EA8AAAMAAAAAAQAAKQAAAEkTAAADAAIAAAEAACkAAAAJBwAAAwAAAAEAAADYAAAAGR4AAAMAAAABAAAA2QAAAPwiAAADAAAAAAAAANoAAACbMgAAAQEAAIAAAAAAAAAADAoAAAMAAAAADAAAKgAAAAYzAAABAwAA8RQAAAAAAACQDAAAAwAAAAIAAADbAAAAyQ4AAAMAAAABAAAA3AAAAL00AAADAAAAAQAAAN0AAAD+JAAAAwAAAAEAAADeAAAAwTUAAAMAAAABAQAA3wAAAEoMAAADAAEAAQEAAN8AAAC3NQAAAwAAAAEBAADgAAAANwwAAAMAAQABAQAA4AAAADsmAAADAAAAAQAAAOEAAAA5JgAAAwAAAAEAAADiAAAA0QUAAAAGAAAAAAAAAADwf9E0AAAABgAAAAAAAAAA+H9uMAAAAAcAQcDAAQt1IiAAAAMAAAAAAAAA4wAAAGEbAAADAAAAAgAAAOQAAAAXGgAAAwAAAAIAAADlAAAAQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlAKl8rLS4vAEHAwQELlgMCIAAAAwAAAAEAAADmAAAAnS4AAAMAAAABAAAA5wAAAMkcAAADAAAAAQAAAOgAAAAlIgAAAwAAAAEBAADpAAAAbiIAAAMAAQAAAQAA6QAAALQjAAADAAAAAAAAAOoAAACQDAAAAwkAAJAMAAAAAAAAyQ4AAAMJAADJDgAAAAAAAL00AAADAAAAAQAAAOsAAAD+JAAAAwAAAAEAAADsAAAAshgAAAMAAAABAAAA7QAAALwYAAADAAAAAQAAAO4AAABaNgAAAAYAAP///////+9/ZDYAAAAGAAABAAAAAAAAANE0AAAABgAAAAAAAAAA+H+mMwAAAAYAAAAAAAAAAPD/lDMAAAAGAAAAAAAAAADwf9w0AAAABgAAAAAAAAAAsDybNAAAAAYAAP///////z9DrDQAAAAGAAD///////8/wyUiAAADAAAAAAAAAO8AAAC0IwAAAwAAAAAAAADwAAAAUysAAAMAAAABAAAA8QAAABwMAAADAAAAAQAAAPIAAABvCAAAAwAAAAEAAADzAAAA+SAAAAEEAEHgxAEL4gYFDwAAAwAAAAEAAAD0AAAA/g4AAAMAAAABAAAA9QAAAOsOAAADAAAAAQAAAPYAAADyDgAAAwAAAAEAAAD3AAAAoCMAAAMAAAABAQAA+AAAAKgjAAADAAEAAQEAAPgAAABtEwAAAwAAAAEBAAD5AAAAoCAAAAMAAgABAQAA+QAAAJUgAAADAAEAAQEAAPkAAABlIQAAAwDEAAEBAAD6AAAANB8AAAMAxQABAQAA+gAAAHEhAAADAMcAAQEAAPoAAACrDAAAAwAAAAIAAAD7AAAAsiEAAAMAAAACAAAA/AAAAFUUAAADAAAAAgAAAP0AAAArLAAAAwAAAAIAAAD+AAAA5A4AAAMAAAABAAAA/wAAAD0sAAADAAAAAgEAAAABAAA9HwAAAwABAAIBAAAAAQAAAC4AAAMAAQABAQAAAQEAAL4KAAADAAAAAQEAAAEBAAAlHgAAAwADAAABAAACAQAA+C0AAAMAAgAAAQAAAgEAAMUMAAADCQAA+C0AAP////+0CgAAAwABAAABAAACAQAA4wwAAAMJAAC0CgAA/////yUiAAADAAAAAAAAAAMBAAC0IwAAAwAAAAAAAAADAQAA9iQAAAMAAAABAAAABAEAANQlAAADAAAAAQAAAAUBAACNJQAAAwABAAABAAAGAQAAqyUAAAMAAAAAAQAABgEAAJklAAADAAEAAAEAAAYBAAC3JQAAAwAAAAABAAAGAQAArDIAAAMABQAAAQAAKQAAAA8WAAADAAAAAQEAAAcBAADaIgAAAwABAAABAAAHAQAAHCAAAAMAAgAAAQAABwEAAAcuAAADAAMAAAEAAAcBAACXLgAAAwAEAAABAAAHAQAABRYAAAMABQABAQAABwEAAO0jAAADAAYAAQEAAAcBAADuEwAAAwAHAAABAAAHAQAAHSAAAAMACAABAQAABwEAACIfAAADAAkAAAEAAAcBAABsKQAAAwAKAAABAAAHAQAAATIAAAMACwAAAQAABwEAAOQZAAADAAwAAAEAAAcBAAA8MgAAPygAANoiAAAAAAAAHCAAAAAAAAA4MgAAAAAAACkKAAAAAAAABAwAAAkWAAAEDAAAViQAAFMgAAAAAAAAPDIAAC4jAAAiHwAAAAAAAGwpAAAAAAAAATIAAAAAAADkGQBB0MsBC7ESDAoAAAMAAAAADAAACAEAAAYzAAABAwAAIRUAAAAAAAATIQAAAwgAAABmAAAsAAAA3xwAAAMAAAACAQAACQEAALwHAAADAAEAAgEAAAkBAAD2EwAAAwAAAAEGAAAKAQAA/xUAAAMAAAABBgAACwEAAEgfAAADAAAAAQYAAAwBAAD8LAAAAwAAAAEGAAANAQAApQoAAAMAAAABBgAADgEAAOsQAAADAAAAAQYAAA8BAADVHAAAAwAAAAEGAAAQAQAAxh0AAAMAAAABBgAAEQEAAJU4AAADAAAAAgcAABIBAADsEAAAAwAAAAEGAAATAQAA2RkAAAMAAAABBgAAFAEAAIAhAAADAAAAAQYAABUBAAAwCAAAAwAAAAIHAAAWAQAA1hwAAAMAAAABBgAAFwEAAMcdAAADAAAAAQYAABgBAACpMQAAAwAAAAEGAAAZAQAAPR0AAAMAAAABBgAAGgEAAB4hAAADAAAAAQYAABsBAAA2IQAAAwAAAAEGAAAcAQAAPCEAAAMAAAABBgAAHQEAAB0hAAADAAAAAQYAAB4BAAA1IQAAAwAAAAEGAAAfAQAAOyEAAAMAAAABBgAAIAEAACM5AAADAAAAAQYAACEBAABeGgAAAwAAAAEGAAAiAQAAmzgAAAMAAAABBgAAIwEAAIU5AAADAAAAAQYAACQBAACvCgAAAwAAAAEGAAAlAQAA5QoAAAMAAAACAAAAJgEAAB4eAAADAAAAAAAAACcBAAD7LAAAAwAAAAEGAAAoAQAAKh4AAAMAAAACAAAAKQEAALI4AAADAAAAAQAAACoBAAAGMwAAAQMAABMhAAAAAAAAJDcAAAAGAABpVxSLCr8FQIs5AAAABgAAFlW1u7FrAkCuOAAAAAYAAO85+v5CLuY/GTcAAAAGAAD+gitlRxX3Px83AAAABgAADuUmFXvL2z/LNQAAAAYAABgtRFT7IQlAoDgAAAAGAADNO39mnqDmP6g4AAAABgAAzTt/Zp6g9j/dDQAAAwgAANBoAAAOAAAAJAYAAAMAAAADAAAAKwEAALYNAAADAAAAAgAAACwBAACcBQAAAwABAAMBAACnAAAAeQUAAAMAAAACAAAALQEAAKoNAAADAAAAAgAAAC4BAABwFAAAAwABAAIBAACuAAAAyyMAAAMAAQABAQAApQAAAA4UAAADAAAAAgAAAC8BAACCKAAAAwABAAEBAACsAAAARQ8AAAMAAAABAAAAMAEAAH4RAAADAAEAAQEAAK0AAABTDQAAAwAAAAMAAAAxAQAAvCMAAAMAAAACAAAAMgEAAAYzAAABAwAA3Q0AAAAAAAAlIgAAAwAAAAAAAAAzAQAAtCMAAAMAAAAAAAAANAEAABszAAADAAAAAQAAADQBAAAGMwAAAQMAADweAAAAAAAAtBoAAAEBAAA1AQAAAAAAABYWAAADAAAAAQAAADYBAAAaFgAAAwAAAAEAAAA3AQAADAoAAAMAAAABDAAAOAEAAHMaAAADAAEAAQwAADgBAAAqCAAAAwACAAEMAAA4AQAABjMAAAEDAACIFQAAAAAAAAYzAAABAwAATxsAAAAAAAAIIQAAAQITADkBAAAAAAAAKywAAAMAEwACAQAAOgEAAAYzAAABAwAA+BgAAAAAAABfCAAAAwAAAAEAAAA7AQAAmzIAAAEBAACAAAAAAAAAAAghAAABAhQAOQEAAAAAAAArLAAAAwAUAAIBAAA6AQAABjMAAAEDAADRGAAAAAAAAJsyAAABAQAAgAAAAAAAAAD5IAAAAQEAADwBAAAAAAAAyhgAAAECAAA9AQAAAAAAAAghAAABAgAAPgEAAAAAAAADDQAAAQIAAD8BAAAAAAAAUw0AAAMAAAABAAAAQAEAAEgSAAADAAEAAAEAAEEBAACsMgAAAwkAAEgSAAD/////EA8AAAMAAAAAAQAAQQEAAEkTAAADAAIAAAEAAEEBAAAGMwAAAQEAAEIBAAAAAAAA4xwAAAMAAAACAAAAQwEAABoGAAADAAgAAQEAAMgAAAB9JgAAAwAJAAEBAADIAAAAeCEAAAMACgABAQAAyAAAADMaAAADAAsAAQEAAMgAAAAPFwAAAwAMAAEBAADIAAAAoysAAAMACAABAQAAyQAAAM8MAAADAAkAAQEAAMkAAADnHgAAAwAAAAEAAABEAQAALi0AAAMAAAABAQAARQEAAIIHAAADAAEAAQEAAEUBAABIJQAAAwAAAAAAAABGAQAAKywAAAMAAAACAAAARwEAAGgGAAADAAAAAgAAAEgBAACqCgAAAwAAAAEAAABJAQAA2hwAAAMAAAABAQAASgEAAG4iAAADAAEAAAEAAEoBAACgIwAAAwAAAAEBAABLAQAAqCMAAAMAAQABAQAASwEAAG0TAAADAP//AQEAAEsBAAAZHgAAAwAAAAEAAABMAQAA/CIAAAMAAAAAAAAATQEAAJsyAAABAQAAgAAAAAAAAADKGAAAAQIBAD0BAAAAAAAACCEAAAECAQA+AQAAAAAAAAMNAAABAgEAPwEAAAAAAAAOOAAAAwAWAAEBAABOAQAA/TcAAAMAFwABAQAATgEAAGI4AAADABgAAQEAAE4BAABPOAAAAwAZAAEBAABOAQAA1TgAAAMAGgABAQAATgEAAMI4AAADABsAAQEAAE4BAADpOAAAAwAcAAEBAABOAQAAgDgAAAMAHQABAQAATgEAAAY4AAADABYAAgEAAE8BAAD0NwAAAwAXAAIBAABPAQAAWTgAAAMAGAACAQAATwEAAEU4AAADABkAAgEAAE8BAADMOAAAAwAaAAIBAABPAQAAuDgAAAMAGwACAQAATwEAAN44AAADABwAAgEAAE8BAAB1OAAAAwAdAAIBAABPAQAABjMAAAEDAABmCAAAAAAAAAEAAAACAAAAAQAAAAQAAAABAAAAAQAAAAgAAAAQAAAAAQAAACAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAEAAAAtAAAALQAAAFQAAAA6AAAAOgAAAC4AAAATOwAAWT8AAA07AABQAQAAUQEAAFABAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFgBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAAAfDwcDAQBBkN4BC7oCgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTgAQstEAAAAP7//4f+//8HAAAAABAA/wP+//+H/v//B3xwAAAgcAAAkHAAAAEAMAA6AEGQ4QELEQQAMAA6AEEAWwBfAGAAYQB7AEGw4QELxAsBAwUBAQEBBQUFAQICAwUFAQEBAgIDAwUFAQUBEQAAADCaIAAAmjAAc4FaADAXYAAwB2wAs4FvAAAXcAAAB3wAAIF/AEAwgADDAZgAkIGYAEAGmQBAkJwAtIGkAEAupQAwAbwAQIa8AHCBvwAAAcAAMIHAAEAEwQAwAcMAQILDADCCxABAgsUAMAHHADCBxwAwAcgAQILIADCByQAwAcoAAIHKADABywAwgcsAQALMAAABzQAwAc4AMIHOAAABzwAwgc8AQAbQADAB0wBAgtMAMIHUAEAC1gAwAdcAQILXADCC2ABAhNkAMIHbAEAC3ABAAt4AAIHfAFAD4gBQg+MAUAPlAECQ5gAAge4AQBLvALQB+ABQg/gAQAL6ADAB+wAwgfsAQCj8ADABEAFAEhEBMQEdAUCCHQEwgR4BMQEfAQGCHwFAgiABMIEhATABIgEwgSIBQAojAQEBKAEBgSgBAQEpAQCBKQEAASoBAAIrAQCBLAEAgS0BAQEuAQABMAEBgTABAIExAQGBMgEBATMBAAE0AQCBNAEBATUBAYE1AQEBNgEAgTcBAYE4AQABOQEAgToBAYE+AQABQAEBAUEBAIFBAQGBQwEAAUQBAIFEAQACRQEAAUYBAAFJAQGBTgEBAU8Bc4GiAUAEuAFAArsBAIO9ATCBvwEwAcMBMAPEATABxgEwAscB0AHIATCRyAEwidEBAAHWAQCD1gHTAdgBAJHYAXMB4QEAieEBAAHmAQCC5gEwgecBcwHoAXOB6AFzgeoBcwHrAQCB6wFAGOwBcwH4AXOB+AEAAfkBAIH5AaAB+gFzgfoBQIL7ATCB/AFAAv0BMIP+ATAQAAIwIAgCACAYAgAQKAJAIjACQDZFAjABYAJAjmACAIFnAkBgaAIwppgCAKawArWBwwIxJlAIMYFjCDGBZggAK2gIAIN+CBFQ0AkQBvgJIAb8CXQBQA50gUAOdAFBDnSBQQ50AUIOdIFCDnQBQw6AgUMOgAFEDjArSA4wg14OAYG8DgGBvg4BAccOQH4AD0AYPw+1AUsPtoFLD7YBTA+2gUwPtwFND4CBTQ8wAU8PQGBQDwAIgA8wCIQPAAaIDzAGjA8ACJAPMAiUDwAImA8wCJwPAAagDzAGpA+wAagPAIGoD9MBqQ8AgakP0wGqDwCBqg/TAasPAIGrDzCBrA8wga0PMIGuDzCBrw8ACLAPMAi0DwACuA8ABLkPAAK7DwECvA8BAr0PAQK+D7cIwA9nCMQPuAjID2gIzA+4CNAPaAjUDwAC2A+5AdkPsYHZD7kB2g+xAdsP14HbDzAC3A8wAt0PYQHeD3MB3w+5AeEPsoHhD7oB4g+yAeMP2IHjDzAE5A9iAeYPAALoD9AB6Q/QgekPsAHrD9CB6w8wAuwPMALtDwEC8A/TAfEP04HxD7oB8g8BgfIPsAHzD9OB8w8wAvQPMAL1DzEB9g+6AfkPsoH5D7sB+g+yAfsP2YH7DzAC/A8wAv0PYgH+D6ABkxCgAZUQoIGVEDEBmRABAacQMRCwEAEQuBBAgsEQMRpbEgEaaBIxLwAWAS8YFkACMBYwATEW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DgE4EiHBFSHlGSGqHSGM0UFK4SHwAQ4AAAAAQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEtheWFoX0xpLEthbGkAS2hhcm9zaHRoaSxLaGFyAEtobWVyLEtobXIAS2hvamtpLEtob2oAS2hpdGFuX1NtYWxsX1NjcmlwdCxLaXRzAEtodWRhd2FkaSxTaW5kAExhbyxMYW9vAExhdGluLExhdG4ATGVwY2hhLExlcGMATGltYnUsTGltYgBMaW5lYXJfQSxMaW5hAExpbmVhcl9CLExpbmIATGlzdSxMaXN1AEx5Y2lhbixMeWNpAEx5ZGlhbixMeWRpAE1ha2FzYXIsTWFrYQBNYWhhamFuaSxNYWhqAE1hbGF5YWxhbSxNbHltAE1hbmRhaWMsTWFuZABNYW5pY2hhZWFuLE1hbmkATWFyY2hlbixNYXJjAE1hc2FyYW1fR29uZGksR29ubQBNZWRlZmFpZHJpbixNZWRmAE1lZXRlaV9NYXllayxNdGVpAE1lbmRlX0tpa2FrdWksTWVuZABNZXJvaXRpY19DdXJzaXZlLE1lcmMATWVyb2l0aWNfSGllcm9nbHlwaHMsTWVybwBNaWFvLFBscmQATW9kaSxNb2RpAE1vbmdvbGlhbixNb25nAE1ybyxNcm9vAE11bHRhbmksTXVsdABNeWFubWFyLE15bXIATmFiYXRhZWFuLE5iYXQATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT3JpeWEsT3J5YQBPc2FnZSxPc2dlAE9zbWFueWEsT3NtYQBQYWhhd2hfSG1vbmcsSG1uZwBQYWxteXJlbmUsUGFsbQBQYXVfQ2luX0hhdSxQYXVjAFBoYWdzX1BhLFBoYWcAUGhvZW5pY2lhbixQaG54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ZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBkLkCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5f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dR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD/Sb4QvGm+AAAAAAAAAAAgAAAAYQACAAQABgC8AwgACgAMABUAlQClALkAwQDDAMcAywDRANcA3QDgAOYA+AAIAQoBcwAQARIBFAEgASwBRAFNAVMBYgFoAWoBdgGSAZQBqQG7AccB0QHVAbkC1wE7ANkB2wG3AOEB/AEMAhgCHQIjAicCowMzAj8CQgJLAk4CUQJdAmACaQJsAm8CdQJ4AoECigKcAp8CowKvArkCxQLJAs0C0QLVAucC7QLxAvUC+QL9AgUDCQMNAxMDFwMbAyMDJwMrAy8DNQM9A0EDSQNNA1EDCw9XA1sDXwNjA2cDawNvA3MDeQN9A4EDhQOJA40DkQOVA5kDnQOhA9wQpQPJA80D2QPdA+ED7wPxAz0ETwSZBPAEAgVKBWQFbAVwBXMFmgX6Bf4FBwYLBhQGGAYeBiIGKAaOBpQGmAaeBqIGqwasA/MGrQP2Bq4D+QavA/wGzAP/Bs0DAgfOAwUHCQcNBxEHhgMyBzUHuQM3BzsHiANTB4kDVgeQA2sHigN3B7ADiQeOA5kHnwejB4wDuAePA7sHtAC+B8AHwgcQIMsHLgDNB88HIADSB9YH2wffB+QH6gfwByAA9gcSIgEIBQgHCB0IJQgnCEMALQgwCJABNgg5CE4ARQhHCEwITghRCFoAqQNaAFMIVwhgCGkAYghlCG8IdAh6CH4IoghJAKQIpgipCFYAqwitCLAItAhYALYIuAi7CMAIwgjFCHYAxwjJCMwI0Ah4ANII1AjX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\";if(!S(U)){var ia=U;U=b.locateFile?b.locateFile(ia,t):t+ia}\nfunction ja(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(S(a))try{var c=ka(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d}catch(g){throw Error(\"Converting base64 string to bytes failed.\");}else e=void 0;var f=e;if(f)return f;throw\"both async and sync fetching of the wasm failed\";}catch(g){x(g)}}\nfunction la(){return v||\"function\"!==typeof fetch?Promise.resolve().then(function(){return ja()}):fetch(U,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+U+\"'\";return a.arrayBuffer()}).catch(function(){return ja()})}function V(a){for(;0<a.length;){var c=a.shift();if(\"function\"==typeof c)c(b);else{var d=c.B;\"number\"===typeof d?void 0===c.A?O.get(d)():O.get(d)(c.A):d(void 0===c.A?null:c.A)}}}function W(a){var c=K(a)+1,d=M(c);C(a,D,d,c);return d}\nfunction ma(){}var na=[null,[],[]];function oa(){function a(k){return(k=k.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?k[1]:\"GMT\"}var c=(new Date).getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);N[pa()>>2]=60*g;N[qa()>>2]=Number(c!=f);d=a(d);e=a(e);d=L(d);e=L(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d)}var ra;\nma=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?W(e):null}catch(e){return b.HEAPU8[d]=1,W(e.message)}};\nvar ka=\"function\"===typeof atob?atob:function(a){var c=\"\",d=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var k=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));e=e<<2|f>>4;\nf=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m))}while(d<a.length);return c},sa={a:function(a,c,d,e){x(\"Assertion failed: \"+H(a)+\", at: \"+[c?H(c):\"unknown filename\",d,e?H(e):\"unknown function\"])},b:function(){x(\"\")},g:ma,f:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a)}catch(e){d=a}0!==c?window.alert(a):window.console.log(\"DUMP\",d)},e:function(a){var c=D.length;a>>>=0;if(2147483648<a)return!1;for(var d=1;4>=\nd;d*=2){var e=c*(1+.2/d);e=Math.min(e,a+100663296);e=Math.max(a,e);0<e%65536&&(e+=65536-e%65536);a:{try{y.grow(Math.min(2147483648,e)-ba.byteLength+65535>>>16);ca();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},d:function(a,c,d,e){for(var f=0,g=0;g<d;g++){var k=N[c>>2],m=N[c+4>>2];c+=8;for(var w=0;w<m;w++){var l=D[k+w],p=na[a];0===l||10===l?((1===a?aa:u)(J(p,0)),p.length=0):p.push(l)}f+=m}N[e>>2]=f;return 0},c:function(a){var c=Date.now();N[a>>2]=c/1E3|0;N[a+4>>2]=c%1E3*1E3|0;return 0},\nh:function(a,c){ra||(ra=!0,oa());a=new Date(1E3*N[a>>2]);N[c>>2]=a.getSeconds();N[c+4>>2]=a.getMinutes();N[c+8>>2]=a.getHours();N[c+12>>2]=a.getDate();N[c+16>>2]=a.getMonth();N[c+20>>2]=a.getFullYear()-1900;N[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[c+36>>2]=-(60*a.getTimezoneOffset());var e=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;N[c+32>>2]=a;a=N[X()+\n(a?4:0)>>2];N[c+40>>2]=a;return c},i:function(a){a=H(a);window.console.log(a)},j:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\\n${d}`;0!==e?window.alert(d):window.console.error(d)}};\n(function(){function a(f){b.asm=f.exports;y=b.asm.k;ca();O=b.asm.t;ea.unshift(b.asm.l);P--;b.monitorRunDependencies&&b.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()))}function c(f){a(f.instance)}function d(f){return la().then(function(g){return WebAssembly.instantiate(g,e)}).then(function(g){return g}).then(f,function(g){u(\"failed to asynchronously prepare wasm: \"+g);x(g)})}var e={a:sa};P++;b.monitorRunDependencies&&b.monitorRunDependencies(P);if(b.instantiateWasm)try{return b.instantiateWasm(e,\na)}catch(f){return u(\"Module.instantiateWasm callback failed with error: \"+f),!1}(function(){return v||\"function\"!==typeof WebAssembly.instantiateStreaming||S(U)||\"function\"!==typeof fetch?d(c):fetch(U,{credentials:\"same-origin\"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u(\"wasm streaming compile failed: \"+g);u(\"falling back to ArrayBuffer instantiation\");return d(c)})})})().catch(q);return{}})();\nb.___wasm_call_ctors=function(){return(b.___wasm_call_ctors=b.asm.l).apply(null,arguments)};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.m).apply(null,arguments)};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.n).apply(null,arguments)};b._init=function(){return(b._init=b.asm.o).apply(null,arguments)};b._commFun=function(){return(b._commFun=b.asm.p).apply(null,arguments)};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.q).apply(null,arguments)};\nvar M=b._malloc=function(){return(M=b._malloc=b.asm.r).apply(null,arguments)};b._free=function(){return(b._free=b.asm.s).apply(null,arguments)};\nvar X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments)},qa=b.__get_daylight=function(){return(qa=b.__get_daylight=b.asm.v).apply(null,arguments)},pa=b.__get_timezone=function(){return(pa=b.__get_timezone=b.asm.w).apply(null,arguments)},F=b.stackSave=function(){return(F=b.stackSave=b.asm.x).apply(null,arguments)},G=b.stackRestore=function(){return(G=b.stackRestore=b.asm.y).apply(null,arguments)},B=b.stackAlloc=function(){return(B=b.stackAlloc=b.asm.z).apply(null,arguments)};\nb.ccall=A;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return\"number\"===g});return\"string\"!==c&&f&&!e?b[\"_\"+a]:function(){return A(a,c,d,arguments,e)}};b.stringToNewUTF8=W;var Y;R=function ta(){Y||Z();Y||(R=ta)};\nfunction Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(ea);n(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for(\"function\"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();fa.unshift(c)}V(fa)}}if(!(0<P)){if(b.preRun)for(\"function\"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ha();V(da);0<P||(b.setStatus?(b.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){b.setStatus(\"\")},1);a()},1)):a())}}b.run=Z;\nif(b.preInit)for(\"function\"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();Z();\n\n\n return Module.ready\n}\n);\n})();\nexport default Module;","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// In mozilla-central, this file is loaded as non-module script,\n// so it mustn't have any dependencies.\n\nclass SandboxSupportBase {\n /**\n * @param {DOMWindow} - win\n */\n constructor(win) {\n this.win = win;\n this.timeoutIds = new Map();\n\n // Will be assigned after the sandbox is initialized\n this.commFun = null;\n }\n\n destroy() {\n this.commFunc = null;\n this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));\n this.timeoutIds = null;\n }\n\n /**\n * @param {Object} val - Export a value in the sandbox.\n */\n exportValueToSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {Object} val - Import a value from the sandbox.\n */\n importValueFromSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} errorMessage - Create an error in the sandbox.\n */\n createErrorForSandbox(errorMessage) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} name - Name of the function to call in the sandbox\n * @param {Array<Object>} args - Arguments of the function.\n */\n callSandboxFunction(name, args) {\n try {\n args = this.exportValueToSandbox(args);\n this.commFun(name, args);\n } catch (e) {\n this.win.console.error(e);\n }\n }\n\n createSandboxExternals() {\n // All the functions in externals object are called\n // from the sandbox.\n const externals = {\n setTimeout: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setTimeout(() => {\n this.timeoutIds.delete(callbackId);\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: false,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearTimeout: id => {\n this.win.clearTimeout(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n setInterval: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setInterval(() => {\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: true,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearInterval: id => {\n this.win.clearInterval(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n alert: cMsg => {\n if (typeof cMsg !== \"string\") {\n return;\n }\n this.win.alert(cMsg);\n },\n confirm: cMsg => {\n if (typeof cMsg !== \"string\") {\n return false;\n }\n return this.win.confirm(cMsg);\n },\n prompt: (cQuestion, cDefault) => {\n if (typeof cQuestion !== \"string\" || typeof cDefault !== \"string\") {\n return null;\n }\n return this.win.prompt(cQuestion, cDefault);\n },\n parseURL: cUrl => {\n const url = new this.win.URL(cUrl);\n const props = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"origin\",\n \"password\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\",\n \"searchParams\",\n \"username\",\n ];\n\n return Object.fromEntries(\n props.map(name => [name, url[name].toString()])\n );\n },\n send: data => {\n if (!data) {\n return;\n }\n const event = new this.win.CustomEvent(\"updatefromsandbox\", {\n detail: this.importValueFromSandbox(data),\n });\n this.win.dispatchEvent(event);\n },\n };\n Object.setPrototypeOf(externals, null);\n\n return (name, args) => {\n try {\n const result = externals[name](...args);\n return this.exportValueToSandbox(result);\n } catch (error) {\n throw this.createErrorForSandbox(error?.toString() ?? \"\");\n }\n };\n }\n}\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n exports.SandboxSupportBase = SandboxSupportBase;\n} else {\n /* eslint-disable-next-line no-unused-vars, no-var */\n var EXPORTED_SYMBOLS = [\"SandboxSupportBase\"];\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ModuleLoader from \"../external/quickjs/quickjs-eval.js\";\nimport { SandboxSupportBase } from \"./pdf.sandbox.external.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nclass SandboxSupport extends SandboxSupportBase {\n exportValueToSandbox(val) {\n // The communication with the Quickjs sandbox is based on strings\n // So we use JSON.stringfy to serialize\n return JSON.stringify(val);\n }\n\n importValueFromSandbox(val) {\n return val;\n }\n\n createErrorForSandbox(errorMessage) {\n return new Error(errorMessage);\n }\n}\n\nclass Sandbox {\n constructor(win, module) {\n this.support = new SandboxSupport(win, this);\n\n // The \"external\" functions created in pdf.sandbox.external.js\n // are finally used here:\n // https://github.com/mozilla/pdf.js.quickjs/blob/main/src/myjs.js\n // They're called from the sandbox only.\n module.externalCall = this.support.createSandboxExternals();\n\n this._module = module;\n\n // 0 to display error using console.error\n // else display error using window.alert\n this._alertOnError = 0;\n }\n\n create(data) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\"nukeSandbox\", null, []);\n }\n const code = [PDFJSDev.eval(\"PDF_SCRIPTING_JS_SOURCE\")];\n\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n code.push(\n `globalThis.sendResultForTesting = callExternalFunction.bind(null, \"send\");`\n );\n } else {\n code.push(\"delete dump;\");\n }\n\n let success = false;\n let buf = 0;\n try {\n const sandboxData = JSON.stringify(data);\n // \"pdfjsScripting.initSandbox...\" MUST be the last line to be evaluated\n // since the returned value is used for the communication.\n code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\n buf = this._module.stringToNewUTF8(code.join(\"\\n\"));\n\n success = !!this._module.ccall(\n \"init\",\n \"number\",\n [\"number\", \"number\"],\n [buf, this._alertOnError]\n );\n } catch (error) {\n console.error(error);\n } finally {\n if (buf) {\n this._module.ccall(\"free\", \"number\", [\"number\"], [buf]);\n }\n }\n\n if (success) {\n this.support.commFun = this._module.cwrap(\"commFun\", null, [\n \"string\",\n \"string\",\n ]);\n } else {\n this.nukeSandbox();\n throw new Error(\"Cannot start sandbox\");\n }\n }\n\n dispatchEvent(event) {\n this.support?.callSandboxFunction(\"dispatchEvent\", event);\n }\n\n dumpMemoryUse() {\n if (this._module) {\n this._module.ccall(\"dumpMemoryUse\", null, []);\n }\n }\n\n nukeSandbox() {\n if (this._module !== null) {\n this.support.destroy();\n this.support = null;\n this._module.ccall(\"nukeSandbox\", null, []);\n this._module = null;\n }\n }\n\n evalForTesting(code, key) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\n \"evalInSandbox\",\n null,\n [\"string\", \"int\"],\n [\n `try {\n sendResultForTesting([{ id: \"${key}\", result: ${code} }]);\n } catch (error) {\n sendResultForTesting([{ id: \"${key}\", result: error.message }]);\n }`,\n this._alertOnError,\n ]\n );\n } else {\n throw new Error(\"Not implemented: evalForTesting\");\n }\n }\n}\n\nfunction QuickJSSandbox() {\n return ModuleLoader().then(module => {\n return new Sandbox(window, module);\n });\n}\n\nexport { QuickJSSandbox };\n"],"names":["Module","_scriptDir","document","currentScript","src","undefined","b","h","Object","assign","n","q","ready","Promise","a","c","r","t","indexOf","substr","replace","lastIndexOf","aa","print","console","log","bind","u","printErr","warn","v","wasmBinary","noExitRuntime","WebAssembly","x","y","z","A","d","e","f","string","l","p","T","length","B","C","D","array","E","set","g","k","m","w","F","apply","G","H","I","TextDecoder","J","subarray","decode","String","fromCharCode","charCodeAt","K","L","M","ba","N","ca","buffer","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","Uint8Array","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","O","da","ea","fa","ha","preRun","shift","unshift","P","Q","R","preloadedImages","preloadedAudios","onAbort","RuntimeError","S","startsWith","U","ia","locateFile","ja","ka","slice","Error","la","fetch","resolve","then","credentials","ok","arrayBuffer","catch","V","get","W","ma","na","oa","toTimeString","match","Date","getFullYear","getTimezoneOffset","Math","max","pa","qa","Number","X","ra","JSON","parse","externalCall","message","atob","charAt","sa","window","alert","min","grow","byteLength","push","now","getSeconds","getMinutes","getHours","getDate","getMonth","getDay","getTime","i","j","error","asm","exports","monitorRunDependencies","clearInterval","instance","instantiate","instantiateWasm","instantiateStreaming","___wasm_call_ctors","arguments","_evalInSandbox","_nukeSandbox","_init","o","_commFun","_dumpMemoryUse","_malloc","_free","s","__get_tzname","__get_daylight","__get_timezone","stackSave","stackRestore","stackAlloc","ccall","cwrap","every","stringToNewUTF8","Y","ta","Z","calledRun","onRuntimeInitialized","postRun","setStatus","setTimeout","run","preInit","pop","SandboxSupportBase","constructor","win","timeoutIds","Map","commFun","destroy","commFunc","forEach","_","id","clearTimeout","exportValueToSandbox","val","importValueFromSandbox","createErrorForSandbox","errorMessage","callSandboxFunction","name","args","createSandboxExternals","externals","callbackId","nMilliseconds","delete","interval","setInterval","cMsg","confirm","prompt","cQuestion","cDefault","parseURL","cUrl","url","URL","props","fromEntries","map","toString","send","data","event","CustomEvent","detail","dispatchEvent","setPrototypeOf","result","pdfjsVersion","pdfjsBuild","SandboxSupport","stringify","Sandbox","module","support","_module","_alertOnError","create","code","success","buf","sandboxData","join","nukeSandbox","dumpMemoryUse","evalForTesting","key","QuickJSSandbox","ModuleLoader"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.sandbox.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.sandbox/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.sandbox/external/quickjs/quickjs-eval.js","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.external.js","webpack://pdfjs-dist/build/pdf.sandbox/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.sandbox/src/pdf.sandbox.js"],"sourcesContent":["(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.sandbox\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.sandbox\"] = factory();\n})(this, () => {\nreturn ","\nvar Module = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(Module) {\n Module = Module || {};\n\n\nvar c;c||(c=typeof Module !== 'undefined' ? Module : {});var h,n;c.ready=new Promise(function(a,b){h=a;n=b});var r=Object.assign({},c),t=\"\";\"undefined\"!=typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf(\"blob:\")?t=t.substr(0,t.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):t=\"\";var aa=c.print||console.log.bind(console),u=c.printErr||console.warn.bind(console);Object.assign(c,r);r=null;var v;c.wasmBinary&&(v=c.wasmBinary);\nvar noExitRuntime=c.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&w(\"no native wasm support detected\");var x,y=!1;\nfunction z(a,b,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var S=(l.length<<2)+1;p=A(S);B(l,C,p,S)}return p},array:function(l){var p=A(l.length);D.set(l,p);return p}};a=c[\"_\"+a];var g=[],k=0;if(e)for(var m=0;m<e.length;m++){var q=f[d[m]];q?(0===k&&(k=E()),g[m]=q(e[m])):g[m]=e[m]}d=a.apply(null,g);return d=function(l){0!==k&&F(k);return\"string\"===b?G(l):\"boolean\"===b?!!l:l}(d)}var H=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction I(a,b){for(var d=b+NaN,e=b;a[e]&&!(e>=d);)++e;if(16<e-b&&a.buffer&&H)return H.decode(a.subarray(b,e));for(d=\"\";b<e;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var k=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function G(a){return a?I(C,a):\"\"}\nfunction B(a,b,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(d>=e)break;b[d++]=g}else{if(2047>=g){if(d+1>=e)break;b[d++]=192|g>>6}else{if(65535>=g){if(d+2>=e)break;b[d++]=224|g>>12}else{if(d+3>=e)break;b[d++]=240|g>>18;b[d++]=128|g>>12&63}b[d++]=128|g>>6&63}b[d++]=128|g&63}}b[d]=0}}\nfunction J(a){for(var b=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++b:b=2047>=e?b+2:65535>=e?b+3:b+4}return b}function K(a){var b=J(a)+1,d=L(b);d&&B(a,D,d,b);return d}var M,D,C,N;\nfunction ba(){var a=x.buffer;M=a;c.HEAP8=D=new Int8Array(a);c.HEAP16=new Int16Array(a);c.HEAP32=N=new Int32Array(a);c.HEAPU8=C=new Uint8Array(a);c.HEAPU16=new Uint16Array(a);c.HEAPU32=new Uint32Array(a);c.HEAPF32=new Float32Array(a);c.HEAPF64=new Float64Array(a)}var O,ca=[],da=[],ea=[];function fa(){var a=c.preRun.shift();ca.unshift(a)}var P=0,Q=null,R=null;\nfunction w(a){if(c.onAbort)c.onAbort(a);a=\"Aborted(\"+a+\")\";u(a);y=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");n(a);throw a;}function T(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var U;U=\"data:application/octet-stream;base64,AGFzbQEAAAAByQZtYAR/fn9/AX5gA39/fwF/YAJ/fwF/YAJ/fwBgAX8Bf2AFf35/f38BfmADf39/AGABfwBgAXwBfGACf34BfmAEf39/fwF/YAJ/fgBgAn9/AX5gAn9+AX9gA39/fgF/YAN/fn8BfmABfgF/YAN/fn8AYAZ/fn9/f38BfmADf35/AX9gBX9/f39/AX9gBn9+fn9/fwF+YAN/fn4BfmAEf39/fwBgBH9/fn8Bf2ADf39/AX5gBH9/f38BfmAGf39/f39/AX9gBX9+fn5+AGABfwF+YAN/fn4Bf2ACfHwBfGABfgF+YAV/fn9+fwF/YAV/fn5/fwF+YAd/fn9+fn5/AX9gAABgBX9/f39/AGAEf35+fwBgBX9+fn5/AX9gB39/f39/f38Bf2AGf35/fn5/AX9gBH9+f34BfmACfn8Bf2AEf35+fwF/YAJ+fwBgCX9/f39/f39/fwF/YAR/fn5/AX5gBn9/f39/fwF+YAN/fn4AYAR/fn9/AX9gBX9+fn9/AGACfn4BfmAHf35/f39/fwF+YAF/AXxgA39/fgBgBH9+f38AYAR/fn9+AX9gBH9+fn4Bf2AEf39/fgF/YAh/f39/f39/fwF/YAd/f39/f39/AGACfH8BfGADfn9/AX9gA3x8fwF8YAR/f35/AGAEf35+fgF+YAABf2AGf3x/f39/AX9gAAF8YAV/fn9+fwF+YAF8AX5gAX4BfGAFf39+f38Bf2AGf39+fn5+AX9gBn9/f39/fwBgAn98AGAEf39+fwF+YAR/fn9+AGAFf39/f34BfmAHf35+fn9/fwF+YAR+fn5+AX9gCn9/f39/f39/f38Bf2AHf39/f39/fgF+YAd8f39/f39/AGADf39+AX5gBX9/f39/AX5gBX9+f39/AGAFf3x/f38BfmAGf35+fn5/AX9gBH98f38Bf2AGf35/f39/AX9gBX9/fn5/AX9gBX9+f39/AX9gBn9/fn5/fwF/YAV/fn5+fgF/YAJ/fwF8YAR/f35+AX9gBX9/fn5+AX5gB39/f35+fn8Bf2AEf39/fgF+YAJ8fwF/YAJ8fAF/YAh/fn5+fn9+fgF+YAN/fnwBfmAAAX5gAn5+AXxgA35+fgF/YAN/f3wAAkkMAWEBYQAXAWEBYgAkAWEBYwAKAWEBZABFAWEBZQADAWEBZgAGAWEBZwADAWEB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QgBSDwsgAactAAUhAiAAIAEQDCACQX9zQYABcUEHdg8LIANBB2tBbU0EQCABEEkiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAxBASECCyACCwsAIAAgAUEAEKAECxkAIAAoAhAgARDoASIBRQRAIAAQyQELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEG8/QAgAhAVQX8MAQsgABARCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEIoBGiACQRBqJAALCwAgACABQQEQ4gULxQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA1giDUIgiCEOIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyAMIAMgDCAMUCIIG3kgCEEGdK18pyIIQQ9rEHMgBiAIa0EQaiEGIAUpA0ghDCAFKQNAIQMLIANCD4YiC0KAgP7/D4MiAiABQiCIIgR+IhAgC0IgiCITIAFC/////w+DIgF+fCIPQiCGIhEgASACfnwiCyARVK0gAiANQv////8PgyINfiIVIAQgE358IhEgDEIPhiADQjGIhCISQv////8PgyIDIAF+fCIUIA8gEFStQiCGIA9CIIiEfCIPIAIgDkKAgASEIgx+IhYgDSATfnwiDiASQiCIQoCAgIAIhCICIAF+fCIQIAMgBH58IhJCIIZ8Ihd8IQEgByAJaiAGakH//wBrIQYCQCACIAR+IhggDCATfnwiBCAYVK0gBCAEIAMgDX58IgRWrXwgAiAMfnwgBCAEIBEgFVStIBEgFFatfHwiBFatfCADIAx+IgMgAiANfnwiAiADVK1CIIYgAkIgiIR8IAQgAkIghnwiAiAEVK18IAIgAiAQIBJWrSAOIBZUrSAOIBBWrXx8QiCGIBJCIIiEfCICVq18IAIgAiAPIBRUrSAPIBdWrXx8IgJWrXwiBEKAgICAgIDAAINQRQRAIAZBAWohBgwBCyALQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiALIAEgBkH/AGoiBhBzIAVBIGogAiAEIAYQcyAFQRBqIAsgASAHEKECIAUgAiAEIAcQoQIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhCyAFKQMoIAUpAxiEIQEgBSkDACECIAUpAwgMAQsgBEL///////8/gyAGrUIwhoQLIAqEIQogC1AgAUIAWSABQoCAgICAgICAgH9RG0UEQCAKIAJCAXwiASACVK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/ENADCyEAIAAgASACQoCAgIAwIAMgBEECEOMBIQIgACABEAwgAgsZACABBEAgACABQRBrrUKAgICAkH+EEAwLC28BAn8gAUIgiKciAyABpyICQQBIckUEQCACEJUBDwsgA0F4RgRAIAAgACgCECACENYCEBkPC0EAIQIgACABEJgEIgEQDQR/QQAFIAFCgICAgHCDQoCAgICAf1EEQCAAIAEQmAIPCyAAIAGnEKUECwvrAQICfwF+QoCAgIDgACEDIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACABEBogAEEANgIEIAAoAgBBLxAyDwsgACgCDCACSgRAIAAoAgAoAhAgASACIAAoAhAiAXQgAWtBEWoQ5wEiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC/////3eDhCIDNwIEIAEgA0KAgICAeIMgADUCCEL/////B4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEB4LSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALCxAAIAAgACgCKCkDCEEBEFMLFAEBfiAAIAEQLiECIAAgARAMIAILcgEBfwJ/IAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQ1QINARoLAkAgACgCEARAIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAwBCyAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABALQQALCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDZAhogA0EQaiQACygBAX8CQCAAQoCAgIBwVA0AIAEgAKciAS8BBkcNACABKAIgIQILIAILKAAgACACQTAgAkEAEBQiAhANBEAgAUIANwMAQX8PCyAAIAEgAhCwAQsNACAAIAEgAkEAEKoDC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLFQAgACgCACAAKAIEEBogAEEANgIECwoAIABBMGtBCkkLIwECfyAAKAIAIgEgACgC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EBAPCyAAIAJBOWtB/wFxEBAPCyAAIAJBNWtB/wFxEBAPCyAAIAJBMWtB/wFxEBAPCyAAIAJBLWtB/wFxEBAPCyAAIAJBKWtB/wFxEBAPCyAAIAJBJWtB/wFxEBAPCyAAIAJBIWtB/wFxEBAPCyAAIAJBHWtB/wFxEBAPCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcABEBAMBQsgAEHBARAQDAQLIABBwgEQEAwDCyABQSJGDQELIAAgAUH/AXEQECAAIAJB//8DcRAxDwsgACACQRRrQf8BcRAQDwsgACACQf8BcRAQCxsBAX8gACABEDsEf0EABSAAQak2QQAQFkF/CwsZAQF/IAEgAhBAIgNFBEAgACACEJwDCyADCyYBAX8jAEEQayICJAAgAkEANgIMIABBASABQQAQqwMgAkEQaiQACxkAIAAoAhAgARCcAiIBRQRAIAAQyQELIAELbQEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayICQYACIAJBgAJJIgEbEEsaIAFFBEADQCAAIAVBgAIQZyACQYACayICQf8BSw0ACwsgACAFIAIQZwsgBUGAAmokAAsPACAAKAJAQYACaiABEBALbwIBfgF/IAAhBAJAAkAgARASDQAgACABQTsgAUEAEBQiAxANBEAgAw8LIAMQIg0BIAAgAxAMIAAgARCPAyIEDQBCgICAgOAADwsgBCgCKCACQQN0aikDABAPIQMLIAAgAyACEFMhASAAIAMQDCABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFwsgA0GHgAEQzQILEAAgACAANgIEIAAgADYCAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLYgACQAJAIAFBAEgNACAAKAKsAiABTA0AIAAoAqQCIAFBFGxqIgAg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GnZxIAAgBnFyEJ8DGyEHDAILIAAgBkHG0QAQeSEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD7AUUNAQsgA0EANgIMIABBBCACQQAQqwNBfyEECyADQRBqJAAgBAvMAQECfwJAIAFCgICAgHBaBEAgAachAwNAAkAgAy0ABUEEcUUNACAAKAIQKAJEIAMvAQZBGGxqKAIUIgRFDQAgBCgCEEUNACAAIAOtQoCAgIBwhBAPIgEgAiAEKAIQERMAIQIgACABEAwgAg8LIAOtQoCAgIBwhBAPIQEgAEEAIAMgAhBPIQQgACABEAwgBA0CAkAgAy8BBkEVa0H//wNxQQhLDQAgACACEKUDIgRFDQAgBEEfdQ8LIAMoAhAoAiwiAw0ACwtBACEECyAECxoAIAAgASACQQBOBH4gAq0FIAK4EBcLEKEBCwsAIABB/////wdxC8cJAgR+BH8jAEHwAGsiCiQAIARC////////////AIMhBQJAAkAgAVAiCSACQv///////////wCDIgZCgICAgICAwP//AH1CgICAgICAwICAf1QgBlAbRQRAIANCAFIgBUKAgICAgIDA//8AfSIIQoCAgICAgMCAgH9WIAhCgICAgICAwICAf1EbDQELIAkgBkKAgICAgIDA//8AVCAGQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgBkKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACACIAEgA4UgAiAEhUKAgICAgICAgIB/hYRQIgkbIQRCACABIAkbIQMMAgsgAyAFQoCAgICAgMD//wCFhFANASABIAaEUARAIAMgBYRCAFINAiABIAODIQMgAiAEgyEEDAILIAMgBYRQRQ0AIAEhAyACIQQMAQsgAyABIAEgA1QgBSAGViAFIAZRGyIMGyEFIAQgAiAMGyIIQv///////z+DIQYgAiAEIAwbIgdCMIinQf//AXEhCyAIQjCIp0H//wFxIglFBEAgCkHgAGogBSAGIAUgBiAGUCIJG3kgCUEGdK18pyIJQQ9rEHMgCikDaCEGIAopA2AhBUEQIAlrIQkLIAEgAyAMGyEDIAdC////////P4MhBCALRQRAIApB0ABqIAMgBCADIAQgBFAiCxt5IAtBBnStfKciC0EPaxBzQRAgC2shCyAKKQNYIQQgCikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCECIAZCA4YgBUI9iIQhBCADQgOGIQEgByAIhSEDAkAgCSALRg0AIAkgC2siC0H/AEsEQEIAIQJCASEBDAELIApBQGsgASACQYABIAtrEHMgCkEwaiABIAIgCxChAiAKKQMwIAopA0AgCikDSIRCAFKthCEBIAopAzghAgsgBEKAgICAgICABIQhByAFQgOGIQYCQCADQgBTBEBCACEDQgAhBCABIAaFIAIgB4WEUA0CIAYgAX0hBSAHIAJ9IAEgBlatfSIEQv////////8DVg0BIApBIGogBSAEIAUgBCAEUCILG3kgC0EGdK18p0EMayILEHMgCSALayEJIAopAyghBCAKKQMgIQUMAQsgASAGfCIFIAFUrSACIAd8fCIEQoCAgICAgIAIg1ANACAFQgGDIARCP4YgBUIBiISEIQUgCUEBaiEJIARCAYghBAsgCEKAgICAgICAgIB/gyEBIAlB//8BTgRAIAFCgICAgICAwP//AIQhBEIAIQMMAQtBACELAkAgCUEASgRAIAkhCwwBCyAKQRBqIAUgBCAJQf8AahBzIAogBSAEQQEgCWsQoQIgCikDACAKKQMQIAopAxiEQgBSrYQhBSAKKQMIIQQLIARCPYYgBUIDiIQiAiAFp0EHcSIJQQRLrXwiAyACVK0gBEIDiEL///////8/gyALrUIwhoQgAYR8IQQCQCAJQQRGBEAgBCADQgGDIgEgA3wiAyABVK18IQQMAQsgCUUNAQsLIAAgAzcDACAAIAQ3AwggCkHwAGokAAvJBQEFfyMAQeAAayIDJAAgAyABNgJcAkACQAJAAkACQAJAAkACQAJAAkACQANAIAJBFGwiBCADakEUayEFA0ACQCADIAMoAlwiAUEEajYCXAJAAkACQAJAAkAgASgCACIGDggAAQIDAwMECAULIAJBBE4NECADIAFBCGo2AlwgASgCBCEBIAMgBGoiBCAAKAIMIAAoAhAQiAEgAkEBaiECIAQgARC2BEUNBgwJCyACQQRODQ4gAyABQQhqNgJcIAEoAgQhASADIARqIgQg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A0EIaiACEI4ERQRAQQAhBCABIAMpAwgiAkKAgICAgICAEFoEfiAAQb8OEGtBfyEEQgAFIAILNwMACyADQRBqJAAgBAsNACAAIAEgAhAPEM4FC8wBAgF/AXwCfwNAAkACQAJ/AkACQCACEFYOCAAAAAAEBAQBBAsgAqcMAQsgAhBJIgS9IgJCNIinQf8PcSIDQZ0ISw0BIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyEAQQAMAwtBACEAQQAgA0HSCEsNAhpBACACQv////////8Hg0KAgICAgICACIQgA0GTCGuthkIgiKciAGsgACACQgBTGyEAQQAMAgsgACACEKABIgIQDUUNAAtBACEAQX8LIQMgASAANgIAIAMLCwAgACABIAIQkwILLwEBfyMAQdAAayIDJAAgAyAAIANBEGogARCJATYCACAAIAIgAxAWIANB0ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEFAgAUEAOgCIAQsLDQAgACABIAEQQxCtAwsWACAAIAEgAiADIAQgBSAAKQMwEIsCCxsAIAAgAUH/AXEQECAAIAIgACgCBGtBBGsQHguOAQECfyMAQRBrIgIkAAJ/IAEEQCAAQSBqIAAgAEHBAGtBGkkbIABB/wBNDQEaIAJBBGogAEECELcDGiACKAIEDAELIABBIGsgACAAQeEAa0EaSRsgAEH/AE0NABogAkEEaiAAQQAQtwMhASACKAIEIgMgACADQf8ASxsgACABQQFGGwshACACQRBqJAAgAAtmAQF/An9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLVQECfwJAIAFCgICAgHBUDQAgAaciAy8BBiIEQQpLQQEgBHRB8AlxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABEA1FBEAgAEGszABBABAWCwsnACAAIAApA8ABIAIgARAPIgFBAxDsARogACABIAMQ7gUgACABEAwLIAEBfiAAIAAgAiABIANBBEEAEMsBIgUgASAEENABIAULjgIBAn8jAEEwayIFJAACfyACIAEoAgBPBEAgBSACNgIkIAUg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ARAOIAAgBi0AOBBuIABBDhAOIAAoAhBBPUcNACAAQREQDiAAQQYQDiAAQasBEA4gAEHpAEF/EB0hBCAAEBENBiAAQQ4QDiAAEGINBiAGKAIwIghBtgFHIAhBPEdxRQRAIAAgBigCNBCtAQsgACAEECALIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQ1AELIAAoAhBB3QBGDQAgB0Glf0YEQEHOzAAhCAwECyAAQSwQMEUNAQwFCwsgAEGDARAOIAAoAkAQqgEgABARDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB6wBBfxAdIQEgABARDQQgACAKECAgAwRAIABBDhAOCyAAEGINBCAAQesAIAsQHRogACABECBBASEHDAQLIANFBEAgAEGAOUEAEBUMAwsgACgCQCgCgAIgDWpBsQEgDiANaxBLGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBUMAQsgACgCACAGKAI0EBMLQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDiAAQdkAEA4gACAAKAJALwGkARAYCwsSACAAQYN/RiAAQdUAakEuSXILEwAgACABIAIgAyAEQQBBABCKAgusAQIBfwF+IAApAgQiBKdB/////wdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB/wFLDQAgAiADIAIgA0obIQMgAEEQaiEAIAFB/wFxIQEDQCACIANGDQEgACACai0AACABRg0CIAJBAWohAgwACwALQX8hAgsgAguNAQEBfyMAQRBrIgMkACADIAI3AwgCQCAAIAFBhgEgAUEAEBQiAhANDQAgACACEDsEQCAAIAIgAUEBIANBCGoQNiICEA0NASACECINASACECgNASAAIAIQDCAAQco8QQAQFkKAgICA4AAhAgwBCyAAIAIQDCAAIAFBASADQQhqEJAFIQILIANBEGokACACC6MBAgN/AX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf////8HcU5yDQEgAiADQQF0ai8B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BiAHQQhrIggpAwA3AwAMyQELIAkgB0EYayIGKQMAEAwgBiAHQRBrIgYpAwA3AwAgBiAHQQhrIggpAwA3AwAMyAELIAcgB0EIaykDABAPNwMAIAdBCGohCAzHAQsgByAHQRBrKQMAEA83AwAgByAHQQhrKQMAEA83AwggB0EQaiEIDMYBCyAHIAdBGGspAwAQDzcDACAHIAdBEGspAwAQDzcDCCAHIAdBCGspAwAQDzcDECAHQRhqIQgMxQELIAcgB0EIayIGKQMANwMAIAYgB0EQaykDABAPNwMAIAdBCGohCAzEAQsgByAHQQhrIgYpAwAiATcDACAGIAdBEGsiBikDADcDACAGIAEQDzcDACAHQQhqIQgMwwELIAcgB0EIayIGKQMAIgE3AwAgB0EQayIIKQMAIScgCCAHQRhrIggpAwA3AwAgBiAnNwMAIAggARAPNwMAIAdBCGohCAzCAQsgByAHQQhrIgYpAwAiATcDACAHQRBrIggpAwAhJyAIIAdBGGsiCCkDADcDACAGICc3AwAgCCAHQSBrIgYpAwA3AwAgBiABEA83AwAgB0EIaiEIDMEBCyAHQRBrIgYpAwAhASAGIAdBGGsiBikDADcDACAGIAE3AwAMvwELIAdBGGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBCGsiCCkDACEnIAggATcDACAGICc3AwAMvgELIAdBIGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBEGsiCCkDACEnIAggB0EIayIIKQMANwMAIAYgJzcDACAIIAE3AwAMvQELIAdBKGsiBikDACEBIAYgB0EgayIGKQMANwMAIAdBGGsiCCkDACEnIAggB0EQayIIKQMANwMAIAYgJzcDACAIIAdBCGsiBikDADcDACAGIAE3AwAMvAELIAdBCGsiBikDACEBIAYgB0EQayIGKQMANwMAIAdBGGsiCCkDACEnIAggATcDACAGICc3AwAMuwELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggATcDACAGICc3AwAMugELIAdBEGsiBikDACEBIAYgB0EYayIGKQMANwMAIAdBIGsiCCkDACEnIAggB0EoayIIKQMANwMAIAYgJzcDACAIIAE3AwAMuQELIAdBCGsiBikDACEBIAYgB0EQayIG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gIB4RiABQv////8PVnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyARIAEQDzcDGCAJICFBjgEQkgINLCAJIAggESkDGBAfDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIgokACAJIApBDGogB0EIayINKQMAEMYBIQwgDUKAgICAMCAKNQIMQv////8PhSAMGzcDACAKQRBqJABBf0EAIAwbRQ0nDCsLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKICenIAGndK03AwAMJwsgCSAHQaABEMgCRQ0mDCoLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKAn4gJ6cgAad2IgZBAE4EQCAGrQwBCyAGuBAXCzcDAAwmCyMAQRBrIgokACAHQQhrIg0pAwAhAQJ/AkAgCSAKQQxqIAdBEGsiDCkDABDpAwRAIAkgARAMDAELIAkgCkEIaiABEOkDDQAgDAJ+IAooAgwgCigCCHYiDEEATgRAIAytDAELIAy4EBcLNwMAQQAMAQsgDEKAgICAMDcDACANQoCAgIAwNwMAQX8LIQwgCkEQaiQAIAxFDSUMKQsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAad1rTcDAAwlCyAJIAdBoQEQyAJFDSQMKAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogASAngzcDAAwkCyAJIAdBrQEQyAJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCikDAIQiAUL/////D1gEQCAKIAE3AwAMIwsgCSAHQa8BEMgCRQ0iDCYLIAdBCGsiCCkDACIBIAdBEGsiCikDACInhEL/////D1gEQCAKIAEgJ4VC/////w+DNwMADCILIAkgB0GuARDIAkUNIQwlCyAHQQhrIggpAwAiASAHQRBrIgopAwAiJ4RC/////w9YBEAgCiAnpyABp0itQoCAgIAQhDcDAAwhCyAJIAdBowEQlgNFDSAMJAsgB0EIayIIKQMAIgEgB0EQayIKKQMAIieEQv////8PWARAIAogJ6cgAadMrUKAgICAEIQ3AwAMIAsgCSAHQaQBEJYDRQ0fDCMLIAdBCGsiCCkDACIB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ACACAn9BACACKAIQIgFBO0YNABpBACABQf0ARg0AGkEAIAIoAjANABogAhCZAQ0dQQELEPYCIAIQvQENHAweCyACEBENGyACKAIwBEAgAkGIEEEAEBUMHAsgAhCZAQ0bIAJBLxAOIAIQvQFFDRwMGwsgAhARDRogAhCFARogAhDWASACEIgCDRogAkHpAEF/EB0hACACIAIoAkAtAG5Bf3NBAXEiARDxAQ0aAkAgAigCEEGvf0cEQCAAIQMMAQsgAkHrAEF/EB0hAyACEBENGyACIAAQICACIAEQ8QENGwsgAiADECAMFwsgAhA1IQAgAhA1IQEgAigCQCAHQRBqIAsgASAAQQAQqwEgAhARDRkgAhDWASACIAAQICACEIgCDRkgAkHpACABEB0aIAIQuAINGSACQesAIAAQHRogAiABECAgAigCQBCqAQwaCyACEDUhACACEDUhASACEDUhAyACKAJAIAdBEGogCyABIABBABCrASACEBENGCACIAMQICACENYBIAIQuAINGCACIAAQICACQbp/EDANGCACEIgCDRggAigCEEE7RgRAIAIQEQ0ZCyACQeoAIAMQHRogAiABECAgAigCQBCqAQwZCyACEBENFyACENYBQQAhASAHQQA2AgwCQCACKAIQIgBBWEcEQCAAQShHDQEgAiAHQQxqQQAQqQEaDAELIAIoAkAtAGxBAnFFBEAgAkHwIUEAEBUMGQsgAhARDRhBASEBCyACQSgQMA0XIActAAxBAXFFBEAgASEEIwBBQGoiBSQAIAIoAgAhDSACKAJAIg4oArwBIRAgAhA1IQMgAhA1IREgAhA1IRIgAhA1IRMgAhCFARpBASEIIAIoAkAgBUEQaiALIBIgA0EBEKsBIAUgEDYCKCACQesAQX8QHSEUIAIoAkAoAoQCIQkgAiATECAgAigCECEAQVEhAUF/IQoCQAJAAkACQAJAAkACQAJAAkAgAkEEENYDDgIAAQgLIABBSUYhDCAAQVFGIgEhCCABIABBsX9GckUgAEFJR3ENASAAIQELIAIQEQ0EAkAgAigCECIAQfsARiAAQdsARnJFBEAgAEGDf0YEQCACKAIoRQ0CCyACQZLfAEEAEBUMBgtBASEIIAIgAUEAQQFBf0EAENUBQQBIDQcgBUEANgI8DAMLIAUgDSACKAIgEBkiBjYCPCACEBEE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/wFxakEBayEGIAoLIQcgDiAPaiIOIBBNDQALCyAJQRBqJAAgBSAAIAgoAkAQogQiBkHt7wAgBhs2AhAgBUHIAGpBlyggBUEQahCEAiAAIAYQNyAEQX9HBEAgBSAENgIAIAVByABqQYHjACAFEIQCCyAFQcgAakEpEBAMAQtBACEDIAVByABqQcP3AEEAEIQCCyAFQcgAakEKEBAgA0UNAAsLIAVByABqQQAQEEKAgICAICERIAUoAlRFBEAgACAFKAJIEHYhEQsgBUHIAGoQlwEgACABQTUgEUEDEBsaIAVB4ABqJAAL7AECAn8BfiMAQRBrIgMkACABQQhrIgQpAwAhBQJ/AkAgACADQQxqIAFBEGsiASkDABDGAQRAIAAgBRAMDAELIAAgA0EIaiAFEMYBDQAgAQJ/AkACQAJAAkACQAJAIAJBrQFrDgMBAwIACwJAIAJBoAFrDgIFAAQLIAMoAgwgAygCCHUMBQsgAygCCCADKAIMcQwECyADKAIIIAMoAgxyDAMLIAMoAgggAygCDHMMAgsQAQALIAMoAgwgAygCCHQLrTcDAEEADAELIAFCgICAgDA3AwAgBEKAgICAMDcDAEF/CyEAIANBEGokACAAC+oEAgd/An4CQCABQoCAgIBwg0KAgICAkH9SBEBCgICAgOAAIQogACABED0iARANDQELAkAgAkKAgICAcINCgICAgJB/UQ0AQoCAgIDgACEKIAAgAhA9IgIQDUUNACABIQIMAQsCQCACpyIFKQIEIgpC/////weDUA0AAkAgAaciAygCAEEBRw0AIAMpAgQgCoVCgICAgAiDQgBSDQAgACgCECADEKMEIAUoAgQiBkH/////B3EiCCADKAIEIgRB/////wdxIgdqIAZBH3Z0IARBH3YiCWtBEWpJDQAgA0EQaiEEIAkEQCAEIAdBAXRqIAVBEGogBkEBdBAlGiADIAMpAgQiCiAFKQIEfEL/////B4MgCkKAgICAeIOENwIEDAILIAQgB2ogBUEQaiAIECUaIAMgAykCBCIKIAUpAgR8Qv////8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAUpAgQiCqdB/////wdxIAMpAgQiC6dB/////wdxaiIGQYCAgIAETwRAIABBmsMAQQAQUAwBCyAAIAYgCiALhKciCEEfdhD9ASIHDQELQoCAgIDgAAwBCyAHQRBqIQQCQCAIQQBOBEAgBCADQRBqIAMoAgRB/////wdxECUiBCADKAIEQf////8HcWogBUEQaiAFKAIEQf////8HcRAlGiAEIAZqQQA6AAAMAQsgBCADIAMoAgRB/////wdxEJQFIAQgAygCBEEBdGogBSAFKAIEQf////8HcRCUBQsgB61CgICAgJB/hAshCiAAIAEQDAwBCyABIQoLIAAgAhAMIAoLQAAgAAJ/An8gAwRAIAEoAiQgAkEDdGpBBGoMAQtBACABKAIgIgNFDQEaIAMgAS8BKCACakEEdGoLKAIACxDiAQsLACAAQZ8JQQAQFguBDAINfwR+IwBBgAFrIgskACALIQUjAEHgAWsiCCQAAkAgAb0iEkKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIBJC////////////AINCgYCAgICAgPj/AFoEQCAFQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGMEQCAFQS06AAAgBUEBaiEFCyAFQdkLLQAAOgAIIAVB0QspAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiE0KAgICAgICAEH1CgYCAgICAgGBUIBO5IAFicg0BIAhB1QFqIgNBADoAACATIBNCP4ciEoUgEn0hEiACrSEUA0AgAyICQQFrIgNBMEHXACASIBIgFIAiFSAUfn2nIgRBCkgbIARqOgAAIBIgFFohBCAVIRIgBA0ACyATQgBTBEAgAkECayIDQS06AAALIAUgAxCBBgwCC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkcNACMAQYACayICJAACQCACQYABaiABIANBAWoiBEEAEIcDIAJqLQB/QTVHDQAgAkGAAWogASAEQYAIEIcDIgYgAiABIARBgBAQhwNHDQAgAkGAAWogAiAGEHcNAEGACEGAECACLQCAAUEtRhshCQsgBSABIAMgCRCHAxogAkGAAmokAAwBCyADIQIgCEEIaiENIAhBDGohDiAIQRBqIQwjAEGQA2siByQAAkAgBEEDcUEBRiIPRQRAQREhAkEBIQoDQCACIApNBEBBACEJDAMLIAEgAiAKakEBdiIJIA0gDiAMQQAgB0GQAmoiBhC+AiAGEPoFIAFhBEAgCUEBIAlBAEwbIQYDQCAJQQJIBEAgBiECDAMLIAkiAkEBayIJIAxqLQAAQTBGDQALBSAJQQFqIQoLDAALAAsgASACQQFqIgYgB0EMaiAHQQhqIAdBkAFqIgpBACAHQZACahC+AiACIApqLQAAQTVHDQAgASAGIAdBDGogB0EIaiAHQZABaiIKQYAIIAdBkAJqIhAQvgIgASAGIAdBBGogByAHQRBqIhFBgBAgEBC+AiAKIBEgBhB3DQAgBygCDCAHKAIERw0AQYAIQYAQIAcoAggbIQkLIAEgAiANIA4gDCAJIAdBkAJqEL4CIAdBkANqJAAgCCgCDARAIAVBLToAACAFQQFqIQULIAgoAgghBgJAIARBBHENACAGQQBMIAYgA0EVIA8bSnJFBEAgAiAGTARAQQAhBCAGIAJrIgNBACADQQBKGyEDIAUgCEEQaiACECUgAmohBQNAIAMgBEcEQCAFQTA6AAAgBEEBaiEEIAVBAWohBQwBCwsgBUEAOgAADAMLIAUgCEEQaiAGECUgBmoiBEEuOgAAQQAhBSACIAZrIgJBACACQQBKGyECA0AgBEEBaiEEIAIgBUcEQCAEIAhBEGogBSAGamotAAA6AAAgBUEBaiEFDAELCyAEQQA6AAAMAgsgBkEFakEFSw0AIAVBsNwAOwAAQQAhBEEAIAZrIQMgBUECaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFIAhBEGogAhAlIAJqQQA6AAAMAQsgBSAILQAQOgAAAkAgAkECSARAIAVBAWohBAwBCyAFQS46AAEgBUECaiEEQQEhBQNAIAIgBUYNASAEIAhBEGogBWotAAA6AAAgBUEBaiEFIARBAWohBAwACwALIARB5QA6AAAgBkEBayEDIAZBAEwEfyAEQQFqBSAEQSs6AAEgBEECagshAiAIIAM2AgAjAEEQayIEJAAgBCAINgIMIwBBoAFrIgMkACADQQhqIgVBgLEEQZABECUaIAMgAjYCNCADIAI2AhwgA0H/////B0F+IAJrIgYgBkH/////B0sbIgY2AjggAyACIAZqIgI2AiQgAyACNgIYIAVBnOMAIAgQqAQgBgRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgCEHgAWokACAAIAsQdiESIAtBgAFqJAAgEgs3AQF/IAAgAhA4IQUgACACEAwgBUUEQCAAIAMQDEF/DwsgACABIAUgAyAEEBshBCAAIAUQEyAEC5MCAgJ/AXwjAEEQayIEJAACQAJAAkACQCACQiCIpyIFQQJNBEAgAqciA0EATg0DDAELIAVBB2tBbU0EQCAEAn8gAhBJIgZEAAAAAAAA8EFjIAZEAAAAAAAAAABmcQRAIAarDAELQQALIgM2AgwgBiADuGENAwwBCyADBEBBfyEDIAAgAhCgASICEA0NBCAAIARBDGogAkEBEM4CDQQgBCgCDCEDDAMLIAAgBEEMaiACEMcBBEAgACACEAwMAgtBfyEDIAAgAhCgASICEA0NAyAAIARBCGogAkEAEM4CDQMgBCgCCCIDIAQoAgxGDQILIABBx8EAEGsLQX8hAwwBCyABIAM2AgBBACEDCyAEQRBqJAAgAwsfACAAIAEgACACEMoBIgIgAUEAEBQhASAAIAIQEyABCzIBAX8jAEHQAGsiAiQAIAIgACACQRBqIAEQiQE2AgAgAEGw4QAgAhDSAiACQdAAaiQAC5EBAgF/AX4jAEEQayIFJAAgBSAENgIMQX8hBCAAIAEgBUEMahDkAUUEQCADEJsEIAEgAiADKAIEIAMoAgBBA3FBAnRBvKIBaigCABEaACEGIAMQ2AUgBSgCDCIAIAAoAgBB/////wNxNgIAIANCgICAgDAgBiAGEA0iABs3AwBBf0EAIAAbIQQLIAVBEGokACAECw0AIAAgASACQQIQrwMLDQAgACABIAJBAxCvAwsKACAAQSAgAWt2C9MBAQN/IwBBEGsiBSQAQX8hAwJAIAAoAhQNAAJAAkAgAUGAgICABE4EQCAAKAIAQZrDAEEAEFAMAQsgASAAKAIMQQNsQQJtEEpB/////wMQtAEhASAAKAIQIgQgAkGAAkhyRQRAIAAgARDuAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQtwEiAg0BCyAAEIoDDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxC0ATYCDEEAIQMLIAVBEGokACADC4EBAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQQFrcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQdX1AEG+4wBB+BRBrQ4QAAALIAAL8wYCBn8BfgJAAkACQAJ/IAJBAkwEQCACIAEpAgQiCUI+iKdGBEAgACABENYCIgMQ8gFFDQUgASABKAIAQQFrNgIAIAMPCyAAKAI0IAAoAiRBAWsgASACEOUFQf////8DcSIHcSIIQQJ0aiEDIAmnQf////8HcSEFA0AgAiADKAIAIgNFDQIaAkAgACgCOCADQQJ0aigCACIEKQIEIglCIIinQf////8DcSAHRyAJQj6IpyACR3IgCadB/////wdxIAVHcg0AIAQgASAFEOQFDQAgAxDyAQ0EIAQgBCgCAEEBajYCAAwECyAEQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQNB0wEgACgCLEEDbEECbRBKIgRB/////wNLDQEgACAAKAI4IARBAnQQ5wEiBkUNASAAKAIsIgJFBEAgAEEQEJwCIgJFBEAgACAGECEMAwsgAkEBNgIAIAIgAikCBEKAgICAgICAgECENwIEIAYgAjYCACAAIAAoAihBAWo2AihBASECCyAAIAI2AjwgACAGNgI4IAAgBDYCLCAEQQFrIQYDQCACIARPDQEgACgCOCACQQJ0akEAIAJBAWoiAyACIAZGGxDjBTYCACADIQIMAAsACwJAIAEEQCABKQIEIglC//////////8/WARAIAEgCSAFrUI+hoQ3AgQMAgsgACAJpyICQR91IAJB/////wdxIAJBH3Z0akERahDoASICRQRAQQAhAwwECyACQQE2AgAgAiACKQIEQv////93gyABKQIEQoCAgIAIg4QiCTcCBCACIAlCgICAgHiDIAEpAgRC/////weDhDcCBCACQRBqIAFBEGogASgCBCIDQR91IANB/////wdxIANBH3Z0akEBahAlGiAAIAEQpAQgAiEBDAELIABBEBDoASIBRQRAQQAPCyABQoGAgICAgICAgH83AgALIAAgACgCOCAAKAI8IgNBAnRqIgIoAgBBAXY2AjwgAiABNgIAIAEgAzYCDCABIAE1AgQgB61CIIaEIAWtQj6GhDcCBCAAIAAoAihBAWo2AiggBUEDRg0CIAEgACgCNCAIQQJ0aiIBKAIANgIMIAEgAzYCACAAKAIoIAAoAjBIDQIg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AgseACAAQTBrQQpJIABBX3FBwQBrQRpJciAAQd8ARnILrQEBA38gACgCQBoCQCAAKAIEIQMgACABEMYEDQBBBSADayEEA0AgACgCGCICLQAAQfwARwRAQQAPCyAAIAJBAWo2AhggACgCBCECIAAgA0EFEOsBBEAgABCsAkF/DwsgACgCACADakEJOgAAIAAoAgAgA2pBAWogAiAEahBdIABBB0EAELoBIQIgACABEMYEDQEgACgCACACaiAAKAIEIAJrQQRrEF0MAAsAC0F/C0gBAn8CQANAIAFBCkYNASABQQJ0QZLgAWovAQAgAEoNASABQQF0IQIgAUEBaiEBIAJBAXRBlOABai8BACAATA0AC0EBDwtBAAukAgEBfwJ/An8gAUH/AE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB/w9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf//A00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf///wBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf///x9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB/AFyOgAAIAAgAUEYdkE/cUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJB4QIgAhs2AhALJwECfwJAIAAgAUEAEJsBIgMEQCADEJoBRQ0BIAAQdQtBfyECCyACC8kBAgN/AX4jAEEQayIFJAACQCAAIAFBAhBvIgEQDQ0AAkACQCACQQFHDQAgAykDACIHEJABRQ0AIAAgBUEMaiAHEA9BARDOAg0BIAAgAUEwAn4gBSgCDCICQQBOBEAgAq0MAQsgArgQFwsQSEEASA0BDAILIAJBACACQQBKGyECA0AgAiAERg0CIAAgASAEIAMgBEEDdGopAwAQDxCWAiEGIARBAWohBCAGQQBODQALCyAAIAEQDEKAgICA4AAhAQsgBUEQaiQAIAELEQAgACABIAIgAyAEIAUQywELDQAgAEEGQX9BBRDrBQt8AgJ+AX8gACACKQMA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CgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQ5QUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEkiAyADvUL///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsHACAAQQFxCy4BAX8gACAAIAEgACACEMoBIgIgAUEAEBQiARCmASEDIAAgARAMIAAgAhATIAMLEgAgAEEIdCAAQQh2ckH//wNxC1ABAX8gAEEgEC8iAgRAIAJBATYCACACQoCAgIDAAEKAgICAMCABGzcDGCACIAJBGGo2AhAgAiACLQAFQQFyOgAFIAAoAhAgAkEDEL4BCyACCwoAIAAoAgQgAEYLMgACQCAAIAIgAUEAQQAQJCICEA0NACACECINACAAIAIQDCAAEClCgICAgOAAIQILIAILCwAgACABIAIQxgELCwAgAEG2PEEAEBYLdQECfyMAQZABayIEJABB3PsAIQUCQAJAAkACQCABQQFqDgUDAgIAAQILQZ37ACEFDAELQdseIQULIAAgBEHQAGogAxCJASEBIAQgACAEQRBqIAIoAgQQiQE2AgQgBCABNgIAIAAgBSAEENMCCyAEQZABaiQAC2kBAn8jAEEQayIFJAAgBUEANgIIIAVCADcDACAAIAEgAiADIAQgBRChBSECA0AgBSgCACEBIAYgBSgCCE5FBEAgACABIAZBA3RqKAIEEBMgBkEBaiEGDAELCyAAIAEQGiAFQRBqJAAgAgseACABKAIAQQRHBEAgACABQQhqEIsDIAFBBDYCAAsLpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQtwEiBEUEQCAAEIoDDAELIARBEGohBSAAKAIIIQIgAygCDCEGA0AgAkEATEUEQCAFIAJBAWsiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAZBAXYgAWo2AgxBACECCyADQRBqJAAgAgtUAQJ/IAAgASkDGCACECMgACABKQMAIAIQIwJAIAEoAjwiBEUNACABKAIgIQMDQCADIARPDQEgACADKQMAIAIQIyADQQhqIQMgASgCPCEEDAALAAsLGgEBfyABpygCICIDBEAgACADKQMA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BCQAAkACQCAAIARBCGogAUHiABCHASICRQ0AIAQpAwgiARASBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDYiARANDQAgACABEC0iA0UEQEEAIQMMAgsgACACKQMAEKIBIgJBAEgNACACRQ0BIABB6iJBABAWC0F/IQMLIARBEGokACADDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLCgAgACgCAEF8cQszACAAIAJBARD9ASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0ECUaIACtQoCAgICQf4QLZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQViIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLYAEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH/////B3EgAEEfdnRqQRFquCACo6A5AxALC+kGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAqIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECMLIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAjDwsgASgCIARAIAAgAUEoaiACEO8DCyAAIAEpAxAgAhAjIAAgASkDGCACECMPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAjIAAgAykDSCACECMgACADKQNgIAIQIyAAIAMpA2ggAhAjIAVBBGohAwwBCwsgACABKQPAASACECMgACABKQPIASACECMgACABKQOwASACECMgACABKQO4ASACECMgACABKQOoASACECNBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAjIANBAWohAwwBCwsgACABKQOYASACECMgACABKQOgASACECMgACABKQNQIAIQIyAAIAEpA0AgAhAjIAAgASkDSCACECMgACABKQM4IAIQIyAAIAEpAzAgAhAjIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQIyADQQFqIQMMAQsLCw8LQZniAEG+4wBBjixB0joQAAALiAICAX4CfyMAQTBrIgQkAEHK5gAhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFZBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQaiIFQSBBnOMAIAQQVxoMCQsgAEEDQQIgAacbEDIhAwwJCyAAQQEQMiEDDAgLIABBxQAQMiEDDAcLIAAgAUEAEJsDIgEQDQRAIAEhAwwHCyAAIAEgAhCgBCEDIAAgARAMDAYLIAJFDQELIAEQDyEDDAQLIABBw8MAQQAQFgwDCyAAIAEQSUEKQQBBABDMAiEDDAILQbfmACEFCyAAIAUQdiEDCyAEQTBqJAAgAwutBAIIfwF+AkACQAJAAkACQCACQoCAgIBwg0KAgICAkH9SBEAgACACEC4iAhANRQ0BDAILIAIQDyECCyACpyIEQRBqIQcgBCkCBCIMp0H/////B3EhBgJAIAxCgICAgAiDUARAQQAhBANAIAQgBkZFBEAgBSAEIAdqLQAAQQd2aiEFIARBAWohBAwBCwsgBUUEQCAHIQQgAQ0EDAYLIAAgBSAGakEAEP0BIghFDQIgCEEQaiEEQQAhBQNAIAUgBkYN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C1QAIwBBEGsiAiQAIAAgAkEIaiADKQMAEEcEfkKAgICA4AAFIAIpAwhC////////////AINCgICAgICAgPj/AFatQoCAgIAQhAshASACQRBqJAAgAQv4AgIDfwN+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAFQQBMIQVCACEDA0ACQCADIA1RBEAgBCEMDAELQn8hDCAAIAIgAyAIQShqEIwBIglBAEgNAAJAIAlFDQAgBhASRQRAIAggCCkDKDcDACADIQsgA0KAgICACFoEQCADuRAXIQsLIAggAjcDECAIIAs3AwggCCAAIAYgB0EDIAgQJCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAsQDQ0CCwJAAkACQCAFDQAgACAIKQMoIgsQwgEiCUEASA0BIAlFDQAgACAIQSBqIAsQQUEASA0BIAAgASALIAgpAyAgBCAKQoCAgIAwQoCAgIAwENQEIgRCAFMNASAAIAsQDAwDCyAEQv////////8PUw0BIABBi8MAQQAQFiAIKQMoIQsLIAAgCxAMDAILIAAgASAEIAgpAygQcEEASA0BIARCAXwhBAsgA0IBfCEDDAELCyAIQTBqJAAgDAsMACAAQgAgAEIAVRsLKAACQCABEBJFBEAgARAoRQ0BCyAAIAEQPQ8LIAAgAUE4QQBBABC6AgujAgIGfwF+IwBBMGsiAiQAAkACQCADKQMAIgEQIkUNAEKAgICA4AAhCyAAIAEQmQQiA0EASA0BIANFBEAgAEHdygBBABAWDAILIAAgAkEsaiACQShqIAGnIglBAxCSAQ0BIAIoAiwhBiACKAIoIQdBACEDAkADQCADIAdHBEAgBiADQQN0aigCBCEIQYCCASEFAkAgBEUNACAAIAJBCGogCSAIEE8iCkEASA0DIApFDQAgAigCCCEFIAAgAkEIahBOQYCGAUGAggEgBUECcRshBQsgACABIAhCgICAgDBCgICAgDBCgICAgDAgBRB4QQBIDQIgA0EBaiEDDAELCyAAIAYgBxBmDAELIAAgBiAHEGYMAQsgARAPIQsLIAJBMGokACALC+sBAQF+AkACQCABECgEQCAAQek9EHYhBAwBCyABEBIEQCAAQf/gABB2IQQMAQsgACABECsiARANDQEgACABEMIBIgNBAEgEQCAAIAEQDEKAgICA4AAPCwJ/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RQRAIAUgAigCDCABGyEDIAYhAQwCCyADQQZrDgICAAYLIABBiNgAQQAQFQwECyACQShqIAQQwAFFDQEMAwsLIABBnzNBABAVDAELIABBxDNBABAVCyACQShqEEQgAkEQahBECyACQUBrJAAgCAszAQF/A0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBBry4hAyABKAJADQMLQdbVACEDIAJBOkYgAkHNAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQbHVACEDIAEoAoABIAJBBHRqKAIAIgZBOkYgBkHNAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GvEiEDDAILIANBAWohAwwACwALIAAgA0EAEBVBfyEECyAEC2EBAX8gAEG2ARAOIABB9gAQHCAAIAAoAkAvAbwBEBggAEEREA4gAEHpAEF/EB0hASAAQbYBEA4gAEEIEBwgAEEAEBggAEEbEA4gAEEkEA4gAEEAEBggACABECAgAEEOEA4LUQECf0F/IQJBASEDA0ACQCAAIAEQuwENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABARDQAgAEEOEA5BACEDDAELCyACCykBAX4gACABEMoBIgFFBEBCgICAgOAADwsgACABEDIhAiAAIAEQEyACC9sCAQR/IwBBoAFrIgUkACABKAIAIQcgBUGAATYCCCAFIAVBEGo2AgwgBAR/IAVBIzoAEEEBBUEACyEE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DEEHEBsLIQogACAFEBMgB0EBaiEHIApBAE4NAAsMAQsgACAGIAgQZkEAIQYgACACEGAiDBANDQAgBCALNwMYIAQgDDcDECAAIAMgAUECIARBEGoQJCEBIAAgDBAMIAAgCxAMDAELIAAgBiAEKAIMEGYgACALEAxCgICAgOAAIQELIARBIGokACABC+sCAQN/IwBBQGoiAyQAAkAgACABEGMiARANDQACQCAAIANBIGogAaciBCgCBEH/////B3FBAmoQQg0AIANBIGpBIhA+DQAgA0EANgI8A0AgBCgCBEH/////B3EgAkoEQAJAAkACQAJAAkACQAJAAkACQAJAIAQgA0E8ahDbASICQQhrDgYFAgQBBgMACyACQSJGIAJB3ABGcg0GCyACQYBwcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQcAPIAMQVxogA0EgaiACEI4BDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSBqQdwAED4NBCADQSBqIAIQPkUNAQwECyADQSBqIAIQwAENAwsgAygCPCECDAELCyADQSBqQSIQPg0AIAAgARAMIANBIGoQOSEBDAELIAAgARAMIANBIGoQREKAgICA4AAhAQsgA0FAayQAIAELbgEEf0F/IQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAvIgBFDQIgACADIAQQJRoMAQsgACAHIAUQmgIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLYQECfwNAIAAoAigiAUEATEUEQCAAIAFBAWsiATYCKCAAKAIAIAAoAgQgAUEDdGopAwAQDAwBCwsgACgCBCIBIABBCGoiAkcEQCAAKAIAIAEQGgsgAEEENgIsIAAgAjYCBAukBQILfwV+IwBBMGsiAiQAIAEpAyAhDyABKQMYIQ4gASkDCCENIAEpAwAhEAJ+AkACQCABKQMoIhEQngEEQCANEJ4BDQELIABB/MMAQQAQFgwBCyAAIAJBCGpBABBCGiACQQA2AiQCQCAOEBJFBEAgACACQSRqIA4Q3AENAQsgACACQShqIBAQ3AENACAAIAJBLGogASkDEBDHAUEASA0AIA2nIQcgAigCLCIKIAIoAihqIQsgEaciBCgC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CwsNACAAIAEgAkEAEN8BC0MAAnwgAb1CgICAgICAgPj/AINCgICAgICAgPj/AFEEQEQAAAAAAAD4fyAAmUQAAAAAAADwP2ENARoLIAAgARCCBgsLewEBfgJAAn4gBEEEcQRAQSYhAiAAIAEQYwwBC0ElIQIgACABECsLIgEQDQ0AIAAgAhCkASIFEA0NACAAQRAQLyICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBSACEI0BIAUPCyAAIAUQDAsgACABEAxCgICAgOAAC5UBAgJ+AX8gACABEDIhAwJAIAEQXg0AQQAgACgCECgCOCABQQJ0aigCACkCBCICQoCAgICAgICAQINCgICAgICAgICAf1IgAkKAgICA8P///z+DUCACQv//////////v39WcRsNACACp0F/c0EfdkEBIAJC/////weDUBshBAsgBAR+IABBhOcAIANBgucAEL8BBSADCwvcAwEFfyAAQeAAaiIEEHEgAEHQAGohBSAAKAJUIQECQAJAA0AgASAFRwRAIAFBBGstAABBEE8NAiABKAIEIQIgACABQQhrIgNBBhCfBCADIAMtAARBD3FBEHI6AAQgAiEBIAMoAgANASADQQhqIgIQRiACIAQQTAwBCwsMAQtB+vQAQb7jAEHELEG6xgAQAAALIABB1ABqIQEgAEHQAGohAwJAAkADQCADIAEoAgAiAkcEQCACQQhrIgEoAgBBAEwNAiABIAEtAARBD3E6AAQgACABQQcQnwQgAkEEaiEBDAELCyAAQeQAaiEBIABB4ABqIQIDQCACIAEoAgAiAUcEQCAAIAFBCGtBCBCfBCABQQRqIQEMAQsLDAELQZfzAEG+4wBB5yxB7DsQAAALIAAiAkECOgBoIABB2ABqIQMgAEHgAGohBANAIAQgAigCZCIARwRAIABBCGshASAAQQRrLQAAQQ5xBEAgAUEIaiIAEEYgACADEEwFIAIgARDeBQsMAQsLIAJBADoAaCACKAJcIQACQAJAA0AgACADRwRAIABBBGstAABBDnENAiAAKAIEIQEgAiAAQQhrECEgASEADAELCyADEHEMAQtBv+0AQb7jAEGdLUGwJRAAAAsLpwEBBX8gAKciAygCECIBIAEoAhhBf3NBAnRBpH5yaigCACECIAEQKiEBA0AgAkUEQEEADwsgASACQQFrIgRB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AyACNgLIBQsgA0KOgICAcDcDgAEgA0GIBWogAygCkAUgA0GAAWoQLARAIAMoApQFIgJBAEgNFyADIAI2AsgFDBcLIAEgAygCtAUgAygCyAUQNCADQbAFakEAIAdrEMcDDBYLIANCjoCAgHA3A3AgA0GIBWogBCADQfAAahAsBEAgAygClAUiAkEASA0WIAMgAjYCyAUMFgsgA0Lp1IGAcDcDYCADQYgFaiAEIANB4ABqECwEQCAHQQBHIQgMDQsgASADKAK0BSADKALIBRA0IANBsAVqIAcQxwMgBCECDBkLIAkoAAEiB0H/AUoNDyABIAMoArQFIAMoAsgFEDQgA0GwBWoiAiAFQcUAa0H/AXEQECACIAdB/wFxEBAgBCECDBgLIAkoAAEhAiADQo6AgIBwNwOgASADQYgFaiAEIANBoAFqECwEQCAAIAIQEyADKAKUBSICQQBIDRQgAyACNgLIBQwUCyACQS9HDQ4gAEEvEBMgASADKAK0BSADKALIBRA0IANBsAVqQb8BEBAgBCECDBcLIANCyYCAgHA3A9gBIANC2Lb5gnA3A9ABIANBiAVqIAQiAiADQdABahAsDRYgA0F/NgLIASADQoGEkICQCTcDwAEgA0GIBWogAiADQcABahAsDRYgA0F/NgK4ASADQoaOqMiQCTcDsAEgA0GIBWogBCADQbABahAsDRYMDQsgA0KOgICAcDcDoAIgA0GIBWogBCADQaACahAsBEAgAygClAUiAkEASA0SIAMgAjYCyAUMEgsgA0KogICAcDcDkAIgA0GIBWogBCADQZACahAsBEACQCADKAKUBSICQQBIBEAgAygCyAUhAgwBCyADIAI2AsgFCyABIAMoArQFIAIQNCADQbAFakEpEBAMEgsgA0Lp1IGAcDcDgAJBACEIIANBiAVqIAQgA0GAAmoQLA0IIANCq4GAgHA3A/ABIANBiAVqIAQgA0HwAWoQLARAAkAgAygClAUiAkEASARAIAMoAsgFIQIMAQsgAyACNgLIBQsgASADKAK0BSACEDQgA0GwBWpB8AEQEAwSCyADQX82AugBIANCrIGAgJDNGjcD4AEgA0GIBWogBCADQeABahAsRQ0MAkAgAygClAUiBUEASARAIAMoAsgFIQUMAQsgAyAFNgLIBQsgASADKAK0BSAFEDQgA0GwBWpB8AEQECAD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ACAKIAIgCmoiBDYCFCAKIAEoAoQCIgI2AhggBCABKAKAAiACECUaIAAgASgCgAIQGiABQQA2AoACIAogASgCcDYCHCABKAJ8IgcgASgCiAEiBGpBAEwNBiABLQBuQQJxRQ0EIAEoAkQNBEEAIQIDQCACIAdOBEBBACECA0AgASgCiAEgAkwEQEEAIQIDQCACIAEoAsACTg0KIAAgAkEDdCIEIAEoAsgCaigCBBATIAEoAsgCIARqQQA2AgQgAkEBaiECDAALAAUgACABKAKAASACQQR0aigCABATIAJBAWohAgwBCwALAAUgACABKAJ0IAJBBHRqKAIAEBMgAkEBaiECIAEoAnwhBwwBCwALAAtB1fMAQb7jAEGD/gFBizYQAAALBSABKAJ0IAJBBHRqIgQgASgCzAEgBCgCBEEDdGoiBCgCBDYCCCAEIAI2AgQgAkEBaiECDAELCyAAIAEQjQNCgICAgOAADAMLIAogBSAKaiICNgIgIAIgASgCgAEgBEEEdBAlGiAKKAIgIAEoAogBQQR0aiABKAJ0IAEoAnxBBHQQJRoLIAogASgCfDsBKiAKIAEoAogBOwEoIAogASgCjAE7ASwgACABKAKAARAaIAAgASgCdBAaCyAKIAEoArgCIgQ2AjggBARAIAogCCAKaiICNgI0IAIgASgCtAIgBEEDdBAlGgsgACABKAK0AhAaIAFBADYCtAIgCiAUKAIMOwEuAkAgAS0AbkECcQRAIAAgASgC7AIQEyABQfQCahCXAQwBCyAKIAovABFBgAhyOwARIAogASgC7AI2AkAgCiABKALwAjYCRCAKIAAgASgC9AIgASgC+AIQmgIiAjYCUCACRQRAIAogASgC9AI2AlALIAogASgC+AI2AkwgCiABKAKMAzYCVCAKIAEoApADNgJICyABKALMASICIAFB0AFqRwRAIAAgAhAaCyAKIAEoAsACIgQ2AjwgBARAIAogBiAKaiICNgIkIAIgASgCyAIgBEEDdBAlGgsgACABKALIAhAaIAFBADYCyAIgCiAKLwARQX5xIAEvATRBAXFyIgI7ABEgCiABLwE4QQF0QQJxIAJBfXFyIgI7ABEgCiABLQBuOgAQIAogAS8BYEECdEEEcSACQXtxciICOwARIAogAkFPcSABLwFsQQR0QTBxciICOwARIAogASgCtAFBAEgE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DAELCyAGQQEgA2tBA3RqIgNBBGohByADKAIIIQQDQCAEIAdGDQEgBCgCBCEDIAQQRiAAKAIQIAQQvAIgAyEEDAALAAsgBUEwaiQAC8ECAgN+An8jAEEQayICJABCgICAgDAhBQJAAkAgACACQQhqIAAgARArIgEQQQ0AAkAgAikDCCIHQgBXBEAMAQsgB0IBfSEGAkACQAJAAkAgASACQQRqIAIQjgJFDQAgByACKAIAIgitUg0AIAGnIQkgAigCBCEDIARFDQEgAykDACEFIAMgA0EIaiAIQQN0QQhrEIECDAILAkAgBARAIAAgAUIAEGQiBRANDQYgACABQgBCASAGQQEQggNFDQEMBgsgACABIAYQZCIFEA0NBQsgACABIAYQlAJBAE4NAgwECyAIQQN0IANqQQhrKQMAIQULIAkgCSgCKEEBazYCKAsgB0KBgICACFQNACAGuRAXIQYLIAAgAUEwIAYQSEEATg0BCyAAIAUQDEKAgICA4AAhBQsgACABEAwgAkEQaiQAIAULEAAgACADKQMAQREgBBCBAwuuAgIFfgF/IwBBEGsiCiQAAn4CQCAAIApBCGogACABECsiBRBBDQAgCikDCCIBIAKsIgh8IgZCgICAgICAgBBZBEAgAEGqwwBBABAWDAELAkAgBEUgAkEATHJFBEAgACAFIAhCACABQX8QggMNAgwBCyABIQcLIAJBACACQQBKG60hCEIAIQEDQCABIAhSBEAgASAHfCEJIAGnIQIgAUIBfCEBIAAgBSAJIAMgAkEDdGopAwAQDxCRAUEATg0BDAILCyAAIAVBMCAGQoCAgIAIfCIHQv////8PWAR+IAZC/////w+DBSAGuRAXCxBIQQBIDQAgACAFEAwgBkL/////D4MgB0L/////D1gNARogBrkQFwwBCyAAIAUQDEKAgICA4AALIQEgCkEQaiQAIAELPAAgAUEAQdAAEEsiASAENgIMIAEgADYCACABIAIgA2o2AjwgASACNgI4IAFBATYCCCABQqCAgIAQNwMQC38BBH8gAS0AAEHbAEYEQCABQQFqIgMQQ0EBayECIAAoAhAoAjghBEHCASEBA0AgAUHPAUcEQAJAIAQgAUECdGooAgAiBSgCBEH/////B3EgAkcNACAFQRBqIAMgAhB3DQAgACABEBkPCyABQQFqIQEMAQsLEAEA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CyADKQMAEA8hBQwBCyAAEHUMAQsCQCAAIAEgBBBvIgcQDQRAIAAgBRAMDAELIAAgByAFIAYgCBDzA0UNASAAIAcQDAtCgICAgOAAIQcLIAJBEGokACAHC9IDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEHMgBCAAIAJBgfgAIAVrEKECIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB/g4S/Cw8AIAAgASACQQBBAxCCAguiDwIFfw5+IwBB0AJrIgUkACAEQv///////z+DIQogAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg9CgICAgICAwP//AFQgD0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgD0KAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAPhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAPQv///////z9YBEAgBUHAAmogASAMIAEgDCAMUCIGG3kgBkEGdK18pyIGQQ9rEHNBECAGayEGIAUpA8gCIQwgBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCiADIAogClAiBxt5IAdBBnStfKciB0EPaxBzIAYgB2pBEGshBiAFKQO4AiEKIAUpA7ACIQMLIAVBoAJqIApCgICAgICAwACEIhJCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAEHIgBUGQAmpCACAFKQOoAn1CACAEQgAQciAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABByIAVB8AFqIARCAEIAIAUpA4gCfUIAEHIgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQciAFQdABaiAEQgBCACAFKQPoAX1CABByIAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAEHIgBUGwAWogBEIAQgAgBSkDyAF9QgAQciAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABByIAVBkAFqIANCD4ZCACACQgAQciAFQfAAaiACQgBCACAFKQOoASAFKQOgASIPIAUpA5gBfCIEIA9UrXwgBEIBVq18fUIAEHIgBUGAAWpCASAEfUIAIAJCABByIAYgCSAIa2ohBgJ/IAUpA3AiEEIBhiIUIAUpA4gBIg5CAYYgBSkDgAFCP4iEfCILQufsAH0iFUIgiCICIAxCgICAgICAwACEIhZCAYYgAUI/iIQiDEIgiCIEfiIRIAFCAYYiD0IgiCIKIAsgFVatIAsgFFStIAUpA3hCAYYgEEI/iIQgDkI/iHx8fEIBfSIQQiCIIgt+fCIOIBFUrSAOIA4gEEL/////D4MiECAMQv////8PgyIUfnwiDlatfCAEIAt+fCAEIBB+IhMgCyAUfnwiESATVK1CIIYgEUIgiIR8IA4gDiARQiCGfCIOVq18IA4gDiAVQv////8PgyIVIBR+IhMgAiAKfnwiESATVK0gESARIBAgD0L+////D4MiE358IhFWrXx8Ig5WrXwgDiAEIBV+IhcgCyATfnwiBCACIBR+fCILIAogEH58IhBCIIggCyAQVq0gBCAXVK0gBCALVq18fEIghoR8IgQgDlStfCAEIBEgAiATfiICIAogFX58IgpCIIggAiAKVq1CIIaEfCICIBFUrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIAVB0ABqIAIgBCADIBIQciABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQtCACABfSEKIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhByIAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hC0IAIAx9IQogASEPIBYhDCAGQf//AGoLIgZB//8BTgRAIA1CgICAgICAwP//AIQhDUIAIQEMAQsCfiAGQQBKBEAgC0IBhiAKQj+IhCELIARC////////P4MgBq1CMIaEIQwgCkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEKECIAVBMGogDyAMIAZB8ABqEHMgBUEgaiADIBIgBSkDQCICIAUpA0giDBByIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgQgAUIBhiIBVK19IQsgBCABfQshBCAFQRBqIAMgEkIDQgAQciAFIAMgEkIFQgAQciAMIAIgAiADIAJCAYMiASAEfCIDVCALIAEgA1atfCIBIBJWIAEgElEbrXwiAlatfCIEIAIgAiAEQoCAgICAgMD//wBUIAMgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgJWrXwiBCACIARCgICAgICAwP//AFQgAyAFKQMAViABIAUpAwgiA1YgASADURtxrXwiASACVK18IA2EIQ0LIAAgATcDACAAIA03AwggBUHQAmokAAvEAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQBBACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEBBACABIAJTIAEgAlEbDQEgACABIAKFhEIAUg8LIABCAFIgASAC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QT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQcSzBEEZNgIAQX8FQQELDAELIAAgAToAAEEBCwsWACAARQRAQQAPC0HEswQgADYCAEF/C8QCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgAKCwwKCwIDBAUMCwwMCgsHCAkLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LAAsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsACyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEDAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALawEEfyAAKAIALAAAEEVFBEBBAA8LA0AgACgCACEDQX8hASACQcyZs+YATQRAQX8gAywAAEEwayIEIAJBCmwiAWogBEH/////ByABa0obIQELIAAgA0EBajYCACABIQIgAywAARBFDQALIAIL8RICEX8BfiMAQdAAayIHJAAgByABNgJMIAdBN2ohFiAHQThqIRJBACEBAkACQAJAAkADQCABQf////8HIA1rSg0BIAEgDWohDSAHKAJMIgwhAQJAAkACQCAMLQAAIgsEQANAAkACQCALQf8BcSIIRQRAIAEhCwwBCyAIQSVHDQEgASELA0AgAS0AAUElRw0BIAcgAUECaiIINgJMIAtBAWohCyABLQACIQogCCEBIApBJUYNAAsLIAsgDGsiAUH/////ByANayIXSg0HIAAEQCAAIAwgARBnCyABDQZBfyEQQQEhCCAH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AhDvBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRD/AUEATARAIAEgCiADIAkQ/wEEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gAyAEVq19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiAJfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQQFrIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEDMgBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQMyADQf3/AiADQf3/AkgbQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQMyAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARB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AykDCBA4IgJFDQAgACABIAIgBhAPIARBABCIBCEDIAAgAhATIANBAEgNACADQQBHrUKAgICAEIQhBQsgBQsqACADKQMAIgFC/////29YBEAgABApQoCAgIDgAA8LIAAgAUEDQQAQgQMLYwEBfiADKQMAIgRC/////29YBEAgABApQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDgiAkUNACAAIAQgAhB6IQMgACACEBMgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC2MBAn4CQAJAIAMpAwAiAUL/////b1gEQCAAECkMAQsgAykDCCEFIAEhBCACQQNOBEAgAykDECEECyAAIAUQOCICDQELQoCAgIDgAA8LIAAgASACIARBABAUIQEgACACEBMgAQtmAQF+IAMpAwAiBEL/////b1gEQCAAEClCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOCICRQ0AIAAgBCACQQAQ3gEhAyAAIAIQEyADQQBIDQAgA0EAR61CgICAgBCEIQELIAELigECAX8CfiMAQRBrIgQkACADKQMIIQUgAykDACIGIQECQAJAAkACQCACQQNIDQAgAykDECIBELUBDQAgAEHfKUEAEBYMAQsgACAEQQxqIAUQiwQiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhCOAyEBIAAgAiADEJgDCyAEQRBqJAAgAQscACAAIAMpAwBBACACQQFrEEogA0EIakECEJoDC0MAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEMaiADKQMAEMcBDQAaQiAgAigCDCIARQ0AGiAAZ60LIQEgAkEQaiQAIAELUAAjAEEQayICJABCgICAgOAAIQECQCAAIAJBDGogAykDABCTAg0AIAAgAkEIaiADKQMIEJMCDQAgAigCCCACKAIMbK0hAQsgAkEQaiQAIAELBgAgALa7C1AAIAAgACkD0AEiAUIMiCABhSIBQhmGIAGFIgFCG4ggAYUiATcD0AEgAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S/RAAAAAAAAPC/oBAXC/UDAwN8BX8DfiMAQRBrIggkACAIQgA3AwgCQAJAIAJBAEwNAEKAgICA4AAhASAAIAhBCGogAykDABBHDQFBASEJIAgrAwghBCACQQFHBEADQCACIAlGDQIgACAIIAMgCUEDdGopAwAQRw0DIAlBAWohCSAIKwMAIQUjAEEgayIHJAAgBL1C////////////AIMiDSAFvUL///////////8AgyIMIAwgDVYbIg6/IQQCQCAOQjSIpyIKQf8PRg0AIA0gDCAMIA1UGyIMvyEFAkAgDlANACAMQjSIpyILQf8PRg0AIAsgCmtBwQBOBEAgBSAEoCEEDAILAnwgC0H+C08EQCAERAAAAAAAADAUoiEEIAVEAAAAAAAAMBSiIQVEAAAAAAAAsGsMAQtEAAAAAAAA8D8gCkG8BEsNABogBEQAAAAAAACwa6IhBCAFRAAAAAAAALBroiEFRAAAAAAAADAUCyEGIAdBGGogB0EQaiAFEIQGIAdBCGogByAEEIQGIAYgBysDACAHKwMQoCAHKwMIoCAHKwMYoJ+iIQQMAQsgBSEECyAHQSBqJAAMAAsACyAEmSEECyAEvQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBCyAEEBchAQsgCEEQaiQAIAELTgAgACAARAAAAAAAAPC/RAAAAAAAAPA/IABEAAAAAAAAAABjGyAAvUL///////////8Ag0KAgICAgICA+P8AVhsgAEQAAAAAAAAAAGEbC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvdBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAXDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQtAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBSAFIAalIAa9Qv///////////wCDQoCAgICAgID4/wBWGyAGIAW9Qv///////////wCDQoCAgICAgID4/wBYGyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFIAUgBqQgBr1C////////////AINCgICAgICAgPj/AFYbIAYgBb1C////////////AINCgICAgICAgPj/AFgbIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsLIAW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAFEBcLIQEgCEEQaiQAIAEL0AEBAn8jAEEQayICJAACfiAAIAFBJhBqIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARASRQRAIAIgAygCDCIFNgIMIAUgAaciBigCBEH/////B3FJDQEgACABEAwgA0KAgICAMDcDAAsgBEEBNgIAQoCAgIAwDAELIAYgAkEMahDbASEHIAMgAigCDDYCDCAEQQA2AgAgB0H//wNNBEAgACAHQf//A3EQpgMMAQsgACAGIAVBAXRqQRBqQQIQnAQLIQEgAkEQaiQAIAELxwICAn8CfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgARBjIgEQDQ0AIAAgAkEIaiIFQQcQQhogBUE8ED4aIAUgBEEDdCIFQfDKAWooAgAiBhCOARpBnj0gBHZBAXFFBEAgAkEIaiIEQSAQPhogBCAFQfTKAWooAgAQjgEaIARByv4AEI4BGiAAIAMpAwAQYyIIEA0EQCAAIAEQDCACQQhqEEQMAgsgCKchA0EAIQQDQCAEIAMoAgRB/////wdxT0UEQAJAIAMgBBBNIgVBIkYEQCACQQhqQfTvABCOARoMAQsgAkEIaiAFEJYBGgsgBEEBaiEEDAELCyAAIAgQDCACQQhqQSIQPhoLIAJBCGoiAEE+ED4aIAAgARCPARogAEH29QAQjgEaIAAgBhCOARogAkEIakE+ED4aIAAQOSEHCyACQSBqJAAgBwu7BAEIfyMAQTBrIgIkAAJAIAAgARBjIgEQ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IAQgCSkDCBBwQQBIDQcLIARCAXwhBCABQgF8IQEMAAsACyAEQv7///////8PVQ0DIAAgBSAEIAYQDxBwQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBUEwIARCgICAgAh8Qv////8PWAR+IARC/////w+DBSAEuRAXCxBIQQBIDQEMAgsgAEGqwwBBABAWCyAAIAUQDEKAgICA4AAhBQsgACAIEAwgCUEQaiQAIAULLQEBfkKAgICAMCECAkAgARCoAyIARQ0AIAAtABJBBHFFDQAgADUCRCECCyACCzMCAX4Bf0KAgICAMCECAkAgARCoAyIDRQ0AIAMtABJBBHFFDQAgACADKAJAEDIhAgsgAgsoAEKAgICA4AAgACADKQMAIAEQ2QUiAEEAR61CgICAgBCEIABBAEgbC6sBAgF+An9CgICAgOAAIQQgACABEGkEfkKAgICA4AAFQeb+ACECAkAgAaciAy8BBhD4AUUNAAJAIAMoAiAiAy8AESIFQYAIcUUNACADKAJUIgZFDQAgACAGIAMoAkgQ/gEPCyAFQQR2QQNxQQFrIgNBAksNACADQQJ0QaDdAWooAgAhAgsgACACIAAgAUE2IAFBABAUIgEQEgR+IABBLxAyBSABC0GeCBC/AQsLhwQDA34EfwN8AkAgACABEGkNACAAIAApAzBBDhBTIgUQDQ0AIAWnIgkgARC1AUEEdEEQcSAJLQAFQe8BcXI6AAUCQCAAQQAgAkEBaxBKIgJBA3RBGGoQLyIHRQ0AIAcgARAPIgE3AwAgAykDABAPIQQgByACNgIQIAcgBDcDCCACQQAgAkEAShshCgNAIAggCkcEQCAHIAhBA3RqIAMgCEEBaiIIQQN0aikDABAPNwMYDAELCyAJIAc2AiACfyABQv////9vWARAIAAQKUF/DAELIABBACABp0EwEE8LIgNBAEgNAAJAIANFDQAgACABQTAgAUEAEBQiBBANDQEgBEL/////D1gEQCAEpyIDIAJrQQAgAiADSButIQYMAQsgBBBWQQdGBEACQCAEEEkiDL1C////////////AINCgICAgICAgPj/AFYNACAMnSIMIAK3Ig1lDQAgDCANoSELCyALvQJ/IAuZRAAAAAAAAOBBYwRAIAuqDAELQYCAgIB4CyICt71RBEAgAq0hBgwCCyALEBchBgwBCyAA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EIQhAQsgACAGIAcQZgsgAkEwaiQAIAELnQECAX4Bf0KAgICAMCEBAkACQCAAIAMpAwAQKyIEEA0NACACQQEgAkEBShshBUEBIQIDQCACIAVGDQICQCADIAJBA3RqKQMAIgEQKA0AIAEQEg0AIAAgARArIgEQDQ0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQDAsgAkEBaiECDAALAAsgACAEEAwgACABEAxCgICAgOAAIQQLIAQLGAAgACADKQMAIAMpAwgQWq1CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECsiBRANRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkgENACAAEDwiARANDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQYCIGEA0NAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2QQhBCAAIAYQDCAEEA0NAiAEEBJFBEAgACABIAkoAgQgBEGHgAEQG0EASA0DCyADQQFqIQMMAQsLIAAgByAIEGYgAQwBCyAAIAIoAhwgAigCGBBmIAAgBRAMIAEhBUKAgICA4AALIQQgACAFEAwLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEClCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEHdygBBABAWQoCAgIDgAA8LIAEQDwsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABApDAELIAAgARCiASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEIEDCxAAIAAgAykDAEEBQQAQgQMLLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENwEBH5CgICAgOAABSAEEA8LC30BAn4gAykDACIBQv////9vWARAIAAQKUKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOCICRQ0AIAAgASACIAYgBEVBDnQQ2gQhAyAAIAIQEyADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDyEFCyAFCycAIAAgAykDACIB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QRBqJAAgAAtGAQJ+IAIgACgCABAyIQNBACEAIAIgASgCABAyIQQCQCADEA0NACAEEA0NACADpyAEpxCVAiEACyACIAMQDCACIAQQDCAAC2sBAX4CQAJAAkACQAJAIAMtAAUiAQ4EAwICAAELIAAgAygCCBD2BA8LIAFBCEYNAgsQAQALIAAgAygCDCADKAIAIAMtAAggAy0ACSADLgEGEMsBDwsgACAAEDwiBCADKAIIIAMoAgwQJiAECwkAIAAgAxCJAws8AQF+IAAQPCIEEA1FBEAgACAEQTwgAa1CgICAgHCEEA9BAxAbQQBOBEAgBA8LIAAgBBAMC0KAgICA4AALXwEBfwJAIAFFBEAgAkUNASAAIAIQpQUPCyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwBCyAAKAIIIAAoAgQgAmpPBH8gASACEPIFBUEACw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEO8DCwscAQF/IAFBKBBAIgIEQCAAIAIQ7QMgACACECELCyUBAX8gAacoAiAiAwRAIAAgAykDACACECMgACADKQMIIAIQIwsLJwEBfyABpygCICICBEAgACACKQMAECcgACACKQMIECcgACACECELCx4BAX8gAacoAiAiAgRAIAAgAikDABAnIAAgAhAhCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDdBUUNACACKAIMIgNFDQAgACADEPEDIAIpAwAhAQsgACABECcgACACECELC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECMLIAAgAykDGCACECMgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAgRAIAJBBGohBSACKAIIIQMDQCADIAVHBEAgAygCBCEGIANBEGshBCADQQxrKAIARQRAAkAgAigCAARAIAQQpgUMAQsgACAEKQMgECcLIAAgBCkDKBAnCyAAIAQQISAGIQMMAQsLIAAgAigCEBAhIAAgAhAhCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIwsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN0FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAnIAAgAhAhCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACECELCykBAX8gACABpyICNQIkQoCAgICQf4QQJyAAIAI1AiBCgICAgJB/hBAnCxEAIAAgAacoAiApAwAgAhAjCxkBAX8gACABpygCICICKQMAECcgACACECELOgECfwJAIAFBDxBAIgRFDQADQCADIAQtAAVPDQEgACAEIANBA3RqKQMIIAIQIyADQQFqIQMMAAsACws8AQJ/IAFBDxBAIgMEQANAIAIgAy0ABU9FBEAgACADIAJBA3RqKQMIECcgAkEBaiECDAELCyAAIAMQIQsLSQECfyAAIAGnKAIgIgQpAwAgAhAjIAAgBCkDCCACECMDQCADIAQoAhBORQRAIAAgBCADQQN0aikDGCACECMgA0EBaiEDDAELCwtJAQJ/IAAgAacoAiAiAikDABAnIAAgAikDCBAnA0AgAyACKAIQTkUEQCAAIAIgA0EDdGopAxgQJyADQQFqIQMMAQsLIAAgAhAhC44BAQR/IAGnIgMoAiQhBSADKAIgIQQgAygCKCIDBEAgACADrUKAgICAcIQgAhAjCyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NAQJAIAUgA0ECdGooAgAiBkUNACAGLQAFQQFxRQ0AIAAgBiACEQMACyADQQFqIQMMAAsACyAAIAStQoCAgIBghCACECMLC3MBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQJwsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ+gEgAkEBaiECDAELCyAAIAQQIQsgACADrUKAgICAYIQQJwsLEgAgAacoAiAiAARAIAAQrgMLCw4AIAAgAacpAyAgAhAjCxkAIAAgAaciACkDIBAnIABCgICAgDA3AyALNQECfyABpyEEA0AgAyAEKAIoT0UEQCAAIAQoAiQgA0EDdGopAwAgAhAjIANBAWohAwwBCwsLPQEDfyABpyEDA0AgAygCJCEEIAIg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KQwBCyABIQgLIAAgBhAMIAAgBxAMCyAKQSBqJAAgCCEGDAELQoCAgIDgACEGIAAgCUEYaiABQdoAEIcBIgVFDQAgCSkDGCEHIAUtABBFBEAgACAHEAwgAEGpNkEAEBYMAQsgBxASBEAgACAFKQMAIAIgAyAEECQhBgwBCyAAIAMgBBCRAyIIEA1FBEAgBSkDACEBIAkgCDcDECAJIAI3AwggCSABNwMAIAAgByAFKQMIQQMgCRAkIQYLIAAgBxAMIAAgCBAMCyAJQSBqJAAgBgsFACAAmwuDAgMCfAJ/AX4gAL0iBUIgiKdB/////wdxIgNBgIDA/wdPBEAgACAAoA8LQZPx/dQCIQQCQCADQf//P00EQEGT8f3LAiEEIABEAAAAAAAAUEOivSIFQiCIp0H/////B3EiA0UNAQsgBUKAgICAgICAgIB/gyADQQNuIARqrUIghoS/IgIgAqIgAiAAo6IiASABIAGioiABRNft5NQAsMI/okTZUee+y0Tov6CiIAEgAUTC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIAKivUKAgICACHxCgICAgHyDvyIBIAAgASABoqMiACABoSABIAGgIACgo6IgAaAhAAsgAAuHAQMBfgF/AXwgAL0iAUL///////////8Ag78hAAJAAnwgAUI0iKdB/w9xIgJB/QdNBEAgAkHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALELMDRAAAAAAAAOA/oiEACyAAmiAAIAFCAFMbC6gDAgV/AX4gAL1C////////////AINCgYCAgICAgPj/AFQgAb1C////////////AINCgICAgICAgPj/AFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAELIEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB/////wdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf////8HcSICIAVyRQRARBgtRFT7Ifk/IACmDwsCQCACQYCAwP8HRgRAIARBgIDA/wdHDQEgA0EDdEHQhARqKwMADwsgBEGAgMD/B0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCyBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RB8IQEaisDACEACyAAC7IBAwF+AX8BfCAAvSIBQv///////////wCDvyEAAkAgAUI0iKdB/w9xIgJBmQhPBEAgABDaAkTvOfr+Qi7mP6AhAAwBCyACQYAITwRAIAAgAKBEAAAAAAAA8D8gACAAokQAAAAAAADwP6CfIACgo6AQ2gIhAAwBCyACQeUHSQ0AIAAgAKIiAyADRAAAAAAAAPA/oJ9EAAAAAAAA8D+goyAAoBCzAyEACyAAmiAAIAFCAFMbC7kCAwF/A3wBfiAAvSIFQiCIp0H/////B3EiAUGAgMD/A08EQCAFpyABQYCAwP8Da3JFBEAgAEQYLURU+yH5P6JEAAAAAAAAcDigDwtEAAAAAAAAAAAgACAAoaMPCwJAIAFB/////gNNBEAgAUGAgEBqQYCAgPIDSQ0BIAAgACAAohCnAqIgAKAPC0QAAAAAAADwPyAAmaFEAAAAAAAA4D+iIgOfIQAgAxCnAiEEAnwgAUGz5rz/A08EQEQYLURU+yH5PyAAIASiIACgIgAgAKBEB1wUMyamkbygoQwBC0QYLURU+yHpPyAAvUKAgICAcIO/IgIgAqChIAAgAKAgBKJEB1wUMyamkTwgAyACIAKioSAAIAKgoyIAIACgoaGhRBgtRFT7Iek/oAsiAJogACAFQgBTGyEACyAAC3YBAX8gAL1CNIinQf8PcSIBQf8HTQRAIABEAAAAAAAA8L+gIgAgACAAoiAAIACgoJ+gELMDDwsgAUGYCE0EQCAAIACgRAAAAAAAAPC/IAAgAKJEAAAAAAAA8L+gnyAAoKOgENoCDwsgABDaAkTvOfr+Qi7mP6ALWgIBfwF+AkBBsLMEKAIABEBBtLMEKAIAIQIMAQtBsLMEENYFIgI2AgBBtLMEIAIQ4AQiAjYCAAsgAiAAIAAQQ0Gt7wAQtgUiAyABEKcDGkG0swQoAgAgAxAMCwuvpgRRAEGACAvheygpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AHN0cmluZ2lmeQBzdWJhcnJheQBlbXB0eSBhcnJheQBub24gaW50ZWdlciBpbmRleCBpbiB0eXBlZCBhcnJheQBuZWdhdGl2ZSBpbmRleCBpbiB0eXBlZCBhcnJheQBvdXQtb2YtYm91bmQgaW5kZXggaW4gdHlwZWQgYXJyYXkAY2Fubm90IGNyZWF0ZSBudW1lcmljIGluZGV4IGluIHR5cGVkIGFycmF5AGlzQXJyYXkAVHlwZWRBcnJheQBnZXREYXkAZ2V0VVRDRGF5AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgAb3V0LW9mLWJvdW5kIG51bWVyaWMgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kSW5kZXgAaW52YWxpZCBleHBvcnQgc3ludGF4AGludmFsaWQgYXNzaWdubWVudCBzeW50YXgAbWF4AFx1JTA0eABpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AGxpbmUgdGVybWluYXRvciBub3QgYWxsb3dlZCBhZnRlciB0aHJvdwBwb3cAbm93AHN0YWNrIG92ZXJmbG93AG11c3QgYmUgY2FsbGVkIHdpdGggbmV3AGlzVmlldwBEYXRhVmlldwByYXcAJXUAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGltcG9ydC5tZXRhIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb250ZXh0AEpTX0ZyZWVDb250ZXh0AEpTQ29udGV4dABqc19tYXBfaXRlcmF0b3JfbmV4dABqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdHQAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAdGVzdABhc3NpZ25tZW50IHJlc3QgcHJvcGVydHkgbXVzdCBiZSBsYXN0AHNxcnQAc29ydABjYnJ0AHRyaW1TdGFydABwYWRTdGFydAB1bmtub3duIHVuaWNvZGUgc2NyaXB0AFNjcmlwdABoeXBvdABmcmVlX3plcm9fcmVmY291bnQAc3RyX2luZGV4ID09IG51bV9rZXlzX2NvdW50ICsgc3RyX2tleXNfY291bnQAbnVtX2luZGV4ID09IG51bV9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudABsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AHZhbCA8IHMtPmNhcHR1cmVfY291bnQAdmFsMiA8IHMtPmNhcHR1cmVfY291bnQAaW52YWxpZCByZXBlYXQgY291bnQAaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGZvbnQAaW52YWxpZCBjb2RlIHBvaW50AGZyb21Db2RlUG9pbnQAaW52YWxpZCBoaW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAcGFyc2VJbnQAZHVwbGljYXRlIGRlZmF1bHQAc3BsaXQAZXhwZWN0aW5nIGhleCBkaWdpdAB0cmltUmlnaHQAcmVkdWNlUmlnaHQAdW5zaGlmdAB0cmltTGVmdABpbnZhbGlkIG9mZnNldABpbnZhbGlkIGJ5dGVPZmZzZXQAZ2V0VGltZXpvbmVPZmZzZXQAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgc2V0AGZpbmRfanVtcF90YXJnZXQAZXhwZWN0aW5nIHRhcmdldABpbnZhbGlkIGRlc3RydWN0dXJpbmcgdGFyZ2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0AFdlYWtTZXQAY29uc3RydWN0AEpTX0ZyZWVBdG9tU3RydWN0AHVzZSBzdHJpY3QAUmVmbGVjdAByZWplY3QAbm90IGFuIEFzeW5jR2VuZXJhdG9yIG9iamVjdABjYW5ub3QgY29udmVydCB0byBvYmplY3QAaW52YWxpZCBicmFuZCBvbiBvYmplY3QAb3BlcmFuZCAncHJvdG90eXBlJyBwcm9wZXJ0eSBpcyBub3QgYW4gb2JqZWN0AHJlY2VpdmVyIGlzIG5vdCBhbiBvYmplY3QAaXRlcmF0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0AG5vdCBhIERhdGUgb2JqZWN0AG5vdCBhIG9iamVjdABKU09iamVjdABwYXJzZUZsb2F0AGZsYXQAbm90aGluZyB0byByZXBlYXQAY29uY2F0AGNvZGVQb2ludEF0AGNoYXJBdABjaGFyQ29kZUF0AGtleXMAcHJveHk6IHRhcmdldCBwcm9wZXJ0eSBtdXN0IGJlIHByZXNlbnQgaW4gcHJveHkgb3duS2V5cwAgIGZhc3QgYXJyYXlzAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwBwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgYXJndW1lbnRzAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzACAgZWxlbWVudHMAaW52YWxpZCBudW1iZXIgb2YgZGlnaXRzAGJpbmFyeSBvYmplY3RzAGludmFsaWQgcHJvcGVydHkgYWNjZXNzAGpzX29wX2RlZmluZV9jbGFzcwBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAX19nZXRDbGFzcwBzZXRIb3VycwBnZXRIb3VycwBzZXRVVENIb3VycwBnZXRVVENIb3VycwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzAHRvbyBtYW55IGltYnJpY2F0ZWQgcXVhbnRpZmllcnMAdW5pY29kZV9wcm9wX29wcwBhY29zAGZvciBhd2FpdCBpcyBvbmx5IHZhbGlkIGluIGFzeW5jaHJvbm91cyBmdW5jdGlvbnMAbmV3LnRhcmdldCBvbmx5IGFsbG93ZWQgd2l0aGluIGZ1bmN0aW9ucwBieXRlY29kZSBmdW5jdGlvbnMAQyBmdW5jdGlvbnMAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBTY3JpcHRfRXh0ZW5zaW9ucwBhdG9tcwBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMAcmVzb2x2ZV9sYWJlbHMASlNfRXZhbFRoaXMAc3RyaW5ncwBpbnZhbGlkIGRlc2NyaXB0b3IgZmxhZ3MAaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MAdmFsdWVzAHNldE1pbnV0ZXMAZ2V0TWludXRlcwBzZXRVVENNaW51dGVzAGdldFVUQ01pbnV0ZXMAdG9vIG1hbnkgY2FwdHVyZXMAICBzaGFwZXMAZ2V0T3duUHJvcGVydHlOYW1lcwBnY19mcmVlX2N5Y2xlcwBhZGRfZXZhbF92YXJpYWJsZXMAcmVzb2x2ZV92YXJpYWJsZXMAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGNvbXBhY3RfcHJvcGVydGllcwAgIHByb3BlcnRpZXMAZGVmaW5lUHJvcGVydGllcwBlbnRyaWVzAGZyb21FbnRyaWVzAHRvbyBtYW55IHJhbmdlcwBpbmNsdWRlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGlzSW50ZWdlcgBpc1NhZmVJbnRlZ2VyAGJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBjYW5ub3QgdXNlIGlkZW50aWNhbCBBcnJheUJ1ZmZlcgBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAG5vdCBhIG51bWJlcgBsaW5lTnVtYmVyAG1hbGZvcm1lZCB1bmljb2RlIGNoYXIAY2xlYXIAc2V0WWVhcgBnZXRZZWFyAHNldEZ1bGxZZWFyAGdldEZ1bGxZZWFyAHNldFVUQ0Z1bGxZZWFyAGdldFVUQ0Z1bGxZZWFyAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVuZCBvZiByZWdleHAAUmVnRXhwAHN1cABpbnZhbGlkIGdyb3VwAHBvcABjb250aW51ZSBtdXN0IGJlIGluc2lkZSBsb29wAGR1bXAAbnVtX2tleXNfY21wAHVzZSBzdHJpcABtYXAAZmxhdE1hcABXZWFrTWFwAGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAbG9nMXAAaGFzT3duAGl0ZXJhdG9yX2Nsb3NlX3JldHVybgBwcm9taXNlIHNlbGYgcmVzb2x1dGlvbgBvdXQgb2YgbWVtb3J5IGluIHJlZ2V4cCBleGVjdXRpb24AZGVzY3JpcHRpb24AcHJveHk6IGRlZmluZVByb3BlcnR5IGV4Y2VwdGlvbgBqc19hc3luY19nZW5lcmF0b3JfcmVzb2x2ZV9mdW5jdGlvbgBqc19jcmVhdGVfZnVuY3Rpb24Ac2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgByZXR1cm4gbm90IGluIGEgZnVuY3Rpb24AQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBjYWxsRXh0ZXJuYWxGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AaXNGcm96ZW4AbWFya19jaGlsZHJlbgAocG9zICsgbGVuKSA8PSBiY19idWZfbGVuAHVuZXhwZWN0ZWQgZWxsaXBzaXMgdG9rZW4AdGhlbgBzZXR0ZXIgaXMgZm9yYmlkZGVuAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AYXRhbgBuYW4Abm90IGEgYm9vbGVhbgBCb29sZWFuAGdjX3NjYW4AYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBKU19OZXdTeW1ib2xGcm9tQXRvbQBmcm9tAHJhbmRvbQB0cmltAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgbnVtYmVyIGxpdGVyYWwAbWFsZm9ybWVkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmcgbGl0ZXJhbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAF9fZGF0ZV9jbG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBpAHNldE1vbnRoAGdldE1vbnRoAHNldFVUQ01vbnRoAGdldFVUQ01vbnRoAGludmFsaWQga2V5d29yZDogd2l0aABzdGFydHNXaXRoAGVuZHNXaXRoAHByb3AgPT0gSlNfQVRPTV9sZW5ndGgAaW52YWxpZCBhcnJheSBsZW5ndGgAaW52YWxpZCBhcnJheSBidWZmZXIgbGVuZ3RoAGludmFsaWQgbGVuZ3RoAGludmFsaWQgYnl0ZUxlbmd0aABNYXRoAHB1c2gAYWNvc2gASlNfUmVzaXplQXRvbUhhc2gAYXNpbmgAYXRhbmgAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAbWF0Y2gAY2F0Y2gAc2VhcmNoAGZvckVhY2gAbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGJpZwByZWdleHAgbXVzdCBoYXZlIHRoZSAnZycgZmxhZwBvZgBpbmYAZGlmZiA9PSAoaW50OF90KWRpZmYAZGlmZiA9PSAoaW50MTZfdClkaWZmAGhyZWYAZ2NfZGVjcmVmAGZyZWVfdmFyX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAcmVzZXRfd2Vha19yZWYAZGVsZXRlX3dlYWtfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAGluZGV4T2YAbGFzdEluZGV4T2YAdmFsdWVPZgBzZXRQcm90b3R5cGVPZgBnZXRQcm90b3R5cGVPZgBpc1Byb3RvdHlwZU9mACUuKmYAZm9udHNpemUAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAYXRvbSA8IHJ0LT5hdG9tX3NpemUAY29tcHV0ZV9zdGFja19zaXplAG4gPCBidWZfc2l6ZQBub3JtYWxpemUAZnJlZXplAHJlc29sdmUAdG9QcmltaXRpdmUAcHV0X2x2YWx1ZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgdmFsdWUAcmVzdCBlbGVtZW50IGNhbm5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBpbnZhbGlkIHJldCB2YWx1ZQBfX0pTX0F0b21Ub1ZhbHVlAF9fcXVvdGUAaXNGaW5pdGUAZGVsZXRlAGNyZWF0ZQBzZXREYXRlAGdldERhdGUAc2V0VVRDRGF0ZQBnZXRVVENEYXRlAEludmFsaWQgRGF0ZQByZXZlcnNlAHBhcnNlAHByb3h5IHByZXZlbnRFeHRlbnNpb25zIGhhbmRsZXIgcmV0dXJuZWQgZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAc2V0X29iamVjdF9uYW1lAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVua25vd24gdW5pY29kZSBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcHJvcGVydHkgbmFtZQBkdXBsaWNhdGUgX19wcm90b19fIHByb3BlcnR5IG5hbWUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAZXhwZWN0aW5nIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cCBuYW1lAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBpbnZhbGlkIGxleGljYWwgdmFyaWFibGUgbmFtZQBpbnZhbGlkIG1ldGhvZCBuYW1lAGV4cGVjdGluZyBmaWVsZCBuYW1lAGludmFsaWQgZmllbGQgbmFtZQBjbGFzcyBzdGF0ZW1lbnQgcmVxdWlyZXMgYSBuYW1lAGZpbGVOYW1lAGNvbXBpbGUAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAGNhbm5vdCBoYXZlIHNldHRlci9nZXR0ZXIgYW5kIHZhbHVlIG9yIHdyaXRhYmxlAHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAdmFsdWUgaXMgbm90IGl0ZXJhYmxlAHByb3BlcnR5SXNFbnVtZXJhYmxlAG1pc3NpbmcgaW5pdGlhbGl6ZXIgZm9yIGNvbnN0IHZhcmlhYmxlAGxleGljYWwgdmFyaWFibGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQByZXZvY2FibGUAc3RyaWtlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBhc3luY19mdW5jX2ZyZWUAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGNhbm5vdCBkZWxldGUgYSBkaXJlY3QgcmVmZXJlbmNlIGluIHN0cmljdCBtb2RlAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG9jdGFsIGxpdGVyYWxzIGFyZSBkZXByZWNhdGVkIGluIHN0cmljdCBtb2RlAHVuaWNvZGUAICBieXRlY29kZQBKU0Z1bmN0aW9uQnl0ZWNvZGUAc2tpcF9kZWFkX2NvZGUAaW52YWxpZCBhcmd1bWVudCBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllciBpbiBtb2R1bGUgY29kZQBpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGZyb21DaGFyQ29kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAcmVkdWNlAHNvdXJjZQAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBwcm9wZXJ0eSBjb25zdHJ1Y3RvciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlAGludmFsaWQgVVRGLTggc2VxdWVuY2UAY2lyY3VsYXIgcmVmZXJlbmNlAHNsaWNlAHNwbGljZQByYWNlAHJlcGxhY2UAJSsuKmUAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAdW5leHBlY3RlZCAneWllbGQnIGtleXdvcmQAbWFwX2RlY3JlZl9yZWNvcmQAaXRlcmF0b3IgZG9lcyBub3QgaGF2ZSBhIHRocm93IG1ldGhvZABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kACdzdXBlcicgaXMgb25seSB2YWxpZCBpbiBhIG1ldGhvZABmcm91bmQAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAG91dCBvZiBib3VuZABmaW5kAGJpbmQAaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAGV4dHJhbmVvdXMgY2hhcmFjdGVycyBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZGF0YSBhdCB0aGUgZW5kAHVuZXhwZWN0ZWQgZW5kAGludmFsaWQgaW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYW5kAGludmFsaWQgJ2luc3RhbmNlb2YnIHJpZ2h0IG9wZXJhbmQAaW52YWxpZCAnaW4nIG9wZXJhbmQAdHJpbUVuZABwYWRFbmQAYm9sZAAlbGxkAGdjX2RlY3JlZl9jaGlsZAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAZXhwZWN0aW5nIDxicmFuZD4gcHJpdmF0ZSBmaWVsZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAZml4ZWQAdG9GaXhlZABzZXRfb2JqZWN0X25hbWVfY29tcHV0ZWQAcmVnZXggbm90IHN1cHBvcnRlZABldmFsIGlzIG5vdCBzdXBwb3J0ZWQAUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkAGludGVycnVwdGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZAByZWplY3RlZABtZW1vcnkgYWxsb2NhdGVkAG1lbW9yeSB1c2VkAGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIHVuZGVmaW5lZABjYW5ub3Qgc2V0IHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFVuZGVmaW5lZABwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAAnJXMnIGlzIG5vdCBkZWZpbmVkAGdyb3VwIG5hbWUgbm90IGRlZmluZWQAYWxsU2V0dGxlZABmdWxmaWxsZWQAY2Fubm90IGJlIGNhbGxlZABpc1NlYWxlZAAhc2gtPmlzX2hhc2hlZAB2YXJfcmVmLT5pc19kZXRhY2hlZABBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZAAlMDJkLyUwMmQvJTAqZAAlLjNzICUuM3MgJTAyZCAlMCpkADolZABpbnZhbGlkIHRocm93IHZhciB0eXBlICVkAHNjAGpzX2RlZl9tYWxsb2MAdHJ1bmMAZ2MAZXhlYwAvdG1wL3F1aWNranMvcXVpY2tqcy5jAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwAvdG1wL3F1aWNranMvbGlidW5pY29kZS5jAHN1YgBwcm9taXNlX3JlYWN0aW9uX2pvYgBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHJ3YQBfX2xvb2t1cFNldHRlcl9fAF9fZGVmaW5lU2V0dGVyX18AX19sb29rdXBHZXR0ZXJfXwBfX2RlZmluZUdldHRlcl9fAF9fcHJvdG9fXwBbU3ltYm9sLnNwbGl0XQBbU3ltYm9sLnNwZWNpZXNdAFtTeW1ib2wuaXRlcmF0b3JdAFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wudG9TdHJpbmdUYWddAFtTeW1ib2wudG9QcmltaXRpdmVdAFt1bnN1cHBvcnRlZCB0eXBlXQBbZnVuY3Rpb24gYnl0ZWNvZGVdAFtTeW1ib2wuaGFzSW5zdGFuY2VdAFtTeW1ib2wucmVwbGFjZV0AWwAlMDJkOiUwMmQ6JTAyZC4lMDNkWgBQT1NJVElWRV9JTkZJTklUWQBORUdBVElWRV9JTkZJTklUWQBwLT5jbGFzc19pZCA9PSBKU19DTEFTU19BUlJBWQBzdGFja19sZW4gPCBQT1BfU1RBQ0tfTEVOX01BWAAtJTAyZC0lMDJkVABKU19BdG9tR2V0U3RyUlQAb3Bjb2RlIDwgUkVPUF9DT1VOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBOQU4AJTAyZDolMDJkOiUwMmQgJWNNAHMtPmxhYmVsX3Nsb3RzW2xhYmVsXS5maXJzdF9yZWxvYyA9PSBOVUxMAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAcHJzICE9IE5VTEwAc2YtPmN1cl9zcCAhPSBOVUxMAHNmICE9IE5VTEwAbXIxICE9IE5VTEwAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTABiLT5mdW5jX2tpbmQgPT0gSlNfRlVOQ19OT1JNQUwAZW5jb2RlVVJJAGRlY29kZVVSSQBQSQBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQIHx8IHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVBfREVQVEgAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwBJTkYAMDEyMzQ1Njc4OUFCQ0RFRgBTSVpFAE1BWF9WQUxVRQBNSU5fVkFMVUUATkFNRQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUATE9HMkUATE9HMTBFAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9BV0FJVElOR19SRVRVUk4gfHwgcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0NPTVBMRVRFRABVVEMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgAmcXVvdDsAc2V0VWludDgAZ2V0VWludDgAc2V0SW50OABnZXRJbnQ4AG1hbGZvcm1lZCBVVEYtOAByYWRpeCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYAc2V0VWludDE2AGdldFVpbnQxNgBzZXRJbnQxNgBnZXRJbnQxNgBhcmdjID09IDUAc2V0RmxvYXQ2NABnZXRGbG9hdDY0AGFyZ2MgPT0gMwBhdGFuMgBsb2cyAFNRUlQxXzIAU1FSVDIATE4yAGNsejMyAHNldFVpbnQzMgBnZXRVaW50MzIAc2V0SW50MzIAZ2V0SW50MzIAc2V0RmxvYXQzMgBnZXRGbG9hdDMyAHN0YWNrX2xlbiA+PSAyAEpTX0F0b21Jc051bWVyaWNJbmRleDEAanNfZmN2dDEAZXhwbTEAbHMtPmFkZHIgPT0gLTEAc3RhY2tfbGVuID49IDEAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBzdGFja19sZW4gPT0gMQBqc19mcmVlX3NoYXBlMABsb2cxMABMTjEwAHAtPnJlZl9jb3VudCA+IDAAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGFzeW5jIGZ1bmN0aW9uICoACn0pAGxpc3RfZW1wdHkoJnJ0LT5nY19vYmpfbGlzdCkAaiA9PSAoc2gtPnByb3BfY291bnQgLSBzaC0+ZGVsZXRlZF9wcm9wX2NvdW50KQBKU19Jc1VuZGVmaW5lZChmdW5jX3JldCkAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQAhYXRvbV9pc19mcmVlKHApAChudWxsKQAgKG5hdGl2ZSkAanNfY2xhc3NfaGFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQB1bmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg/OikAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAC1fLiF+KicoKQAgYW5vbnltb3VzKABTeW1ib2woAGV4cGVjdGluZyAnfScAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAGV4cGVjdGluZyAnYXMnAHVuZXhwZWN0ZWQgdG9rZW4gaW4gZXhwcmVzc2lvbjogJyUuKnMnAHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwByZWRlY2xhcmF0aW9uIG9mICclcycAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjaXJjdWxhciByZWZlcmVuY2Ugd2hlbiBsb29raW5nIGZvciBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBDb3VsZCBub3QgZmluZCBleHBvcnQgJyVzJyBpbiBtb2R1bGUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwB1bnN1cHBvcnRlZCByZWZlcmVuY2UgdG8gJ3N1cGVyJwBpbnZhbGlkIHVzZSBvZiAnc3VwZXInACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBt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YWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAc3RhdHVzAHJlYXNvbgBnbG9iYWxUaGlzAHRvSlNPTgBPYmplY3QAQXJyYXkARXJyb3IATnVtYmVyAFN0cmluZwBCb29sZWFuAFN5bWJvbABBcmd1bWVudHMATWF0aABKU09OAERhdGUARnVuY3Rpb24AR2VuZXJhdG9yRnVuY3Rpb24ARm9ySW5JdGVyYXRvcgBSZWdFeHAAQXJyYXlCdWZmZXIAU2hhcmVkQXJyYXlCdWZmZXIAVWludDhDbGFtcGVkQXJyYXkASW50OEFycmF5AFVpbnQ4QXJyYXkASW50MTZBcnJheQBVaW50MTZBcnJheQBJbnQzMkFycmF5AFVpbnQzMkFycmF5AEZsb2F0MzJBcnJheQBGbG9hdDY0QXJyYXkARGF0YVZpZXcATWFwAFNldABXZWFrTWFwAFdlYWtTZXQATWFwIEl0ZXJhdG9yAFNldCBJdGVyYXRvcgBBcnJheSBJdGVyYXRvcgBTdHJpbmcgSXRlcmF0b3IAUmVnRXhwIFN0cmluZyBJdGVyYXRvcgBHZW5lcmF0b3IAUHJveHkAUHJvbWlzZQBQcm9taXNlUmVzb2x2ZUZ1bmN0aW9uAFByb21pc2VSZWplY3RGdW5jdGlvbgBBc3luY0Z1bmN0aW9uAEFzeW5jRnVuY3Rpb25SZXNvbHZlAEFzeW5jRnVuY3Rpb25SZWplY3QAQXN5bmNHZW5lcmF0b3JGdW5jdGlvbgBBc3luY0dlbmVyYXRvcgBFdmFsRXJyb3IAUmFuZ2VFcnJvcgBSZWZlcmVuY2VFcnJvcgBTeW50YXhFcnJvcgBUeXBlRXJyb3IAVVJJRXJyb3IASW50ZXJuYWxFcnJvcgA8YnJhbmQ+AFN5bWJvbC50b1ByaW1pdGl2ZQBTeW1ib2wuaXRlcmF0b3IAU3ltYm9sLm1hdGNoAFN5bWJvbC5tYXRjaEFsbABTeW1ib2wucmVwbGFjZQBTeW1ib2wuc2VhcmNoAFN5bWJvbC5zcGxpdABTeW1ib2wudG9TdHJpbmdUYWcAU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZQBTeW1ib2wuaGFzSW5zdGFuY2UAU3ltYm9sLnNwZWNpZXMAU3ltYm9sLnVuc2NvcGFibGVzAFN5bWJvbC5hc3luY0l0ZXJhdG9yAAAAAAABAAAABQABFAUAARUFAAEVBQABFwUAARcBAAEAAQABAAEAAQABAAEAAQABAAEAAQACAAEFAwABCgEBAAABAgEAAQMCAAEBAgABAgMAAQIEAAEDBgABAgMAAQMEAAEEBQABAwMAAQQEAAEFBQABAgIAAQQEAAEDAwABAwMAAQQEAAEFBQADAgENAwEBDQMBAA0DAgENAwIADQMAAQ0DAwEKAQEAAAEAAAABAQIAAQAAAAECAgABAgAAAQEAAAEBAAAGAAAYBQEBDwMCAQoBAgEAAQEBAAEBAQAFAAEXBQABFwUAARcFAQAXBQEAFwUCABcBAgMAAQMAAAYAABgGAAAYBgEAGAUBARcFAQIXBQIAFwECAQABAwAAAQMB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AFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4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iacwH4CIiq2PQZQ4h4+Jt5WAjfkqAAgwB4mvIAgniUFIg2BLaInViaWEuoaYiUP0ALYz0ICKgWBMqoFSYK2BlkIdIi85hp2DQJOCRYixQf+2g7E4jYCVII5FTzCQDgEEQQSGiIlBY4C8jUXVhuw0iVKViWwFBUDv+gYAcAkA8ApAVwwA8A1Axw8A6hcgRRsgVSAgDKhgN6oAUP4AOg0BgxEBxBQhRBkhWh1Bn7xhsNoh8AEOAAAAAEFkbGFtLEFkbG0AQWhvbSxBaG9tAEFuYXRvbGlhbl9IaWVyb2dseXBocyxIbHV3AEFyYWJpYyxBcmFiAEFybWVuaWFuLEFybW4AQXZlc3RhbixBdnN0AEJhbGluZXNlLEJhbGkAQmFtdW0sQmFtdQBCYXNzYV9WYWgsQmFzcwBCYXRhayxCYXRrAEJlbmdhbGksQmVuZwBCaGFpa3N1a2ksQmhrcwBCb3BvbW9mbyxCb3BvAEJyYWhtaSxCcmFoAEJyYWlsbGUsQnJhaQBCdWdpbmVzZSxCdWdpAEJ1aGlkLEJ1aGQAQ2FuYWRpYW5fQWJvcmlnaW5hbCxDYW5zAENhcmlhbixDYXJpAENhdWNhc2lhbl9BbGJhbmlhbixBZ2hiAENoYWttYSxDYWttAENoYW0sQ2hhbQBDaGVyb2tlZSxDaGVyAENob3Jhc21pYW4sQ2hycwBDb21tb24sWnl5eQBDb3B0aWMsQ29wdCxRYWFjAEN1bmVpZm9ybSxYc3V4AEN5cHJpb3QsQ3BydABDeXJpbGxpYyxDeXJsAEN5cHJvX01pbm9hbixDcG1uAERlc2VyZXQsRHNydABEZXZhbmFnYXJpLERldmEARGl2ZXNfQWt1cnUsRGlhawBEb2dyYSxEb2dyAER1cGxveWFuLER1cGwARWd5cHRpYW5fSGllcm9nbHlwaHMsRWd5cABFbGJhc2FuLEVsYmEARWx5bWFpYyxFbHltAEV0aGlvcGljLEV0aGkAR2VvcmdpYW4sR2VvcgBHbGFnb2xpdGljLEdsYWcAR290aGljLEdvdGgAR3JhbnRoYSxHcmFuAEdyZWVrLEdyZWsAR3VqYXJhdGksR3VqcgBHdW5qYWxhX0dvbmRpLEdvbmcAR3VybXVraGksR3VydQBIYW4sSGFuaQBIYW5ndWwsSGFuZwBIYW5pZmlfUm9oaW5neWEsUm9oZwBIYW51bm9vLEhhbm8ASGF0cmFuLEhhdHIASGVicmV3LEhlYnIASGlyYWdhbmEsSGlyYQBJbXBlcmlhbF9BcmFtYWljLEFybWkASW5oZXJpdGVkLFppbmgsUWFhaQBJbnNjcmlwdGlvbmFsX1BhaGxhdmksUGhsaQBJbnNjcmlwdGlvbmFsX1BhcnRoaWFuLFBydGkASmF2YW5lc2UsSmF2YQBLYWl0aGksS3RoaQBLYW5uYWRhLEtuZGEAS2F0YWthbmEsS2FuYQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hbmRpbmFnYXJpLE5hbmQATmV3X1RhaV9MdWUsVGFsdQBOZXdhLE5ld2EATmtvLE5rb28ATnVzaHUsTnNodQBOeWlha2VuZ19QdWFjaHVlX0htb25nLEhtbnAAT2doYW0sT2dhbQBPbF9DaGlraSxPbGNrAE9sZF9IdW5nYXJpYW4sSHVuZwBPbGRfSXRhbGljLEl0YWwAT2xkX05vcnRoX0FyYWJpYW4sTmFyYgBPbGRfUGVybWljLFBlcm0AT2xkX1BlcnNpYW4sWHBlbwBPbGRfU29nZGlhbixTb2dvAE9sZF9Tb3V0aF9BcmFiaWFuLFNhcmIAT2xkX1R1cmtpYyxPcmtoAE9sZF9VeWdodXIsT3VncgBPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVGFuZ3NhLFRuc2EAVG90byxUb3RvAFVnYXJpdGljLFVnYXIAVmFpLFZhaWkAVml0aGt1cWksVml0aABXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAAAAAAAAAMAZmUaFGZlGrhmARo4ZgEaEGZZGgBmeRoAZ4WBGphmERoQZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2JALuJAYKJrwSxkw26ZAGCZK19AY59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U2MsQ3VycmVuY3lfU3ltYm9sAFNrLE1vZGlmaWVyX1N5bWJvbABTbyxPdGhlcl9TeW1ib2wAUGMsQ29ubmVjdG9yX1B1bmN0dWF0aW9uAFBkLERhc2hfUHVuY3R1YXRpb24AUHMsT3Blbl9QdW5jdHVhdGlvbgBQZSxDbG9zZV9QdW5jdHVhdGlvbgBQaSxJbml0aWFsX1B1bmN0dWF0aW9uAFBmLEZpbmFsX1B1bmN0dWF0aW9uAFBvLE90aGVyX1B1bmN0dWF0aW9uAFpzLFNwYWNlX1NlcGFyYXRvcgBabCxMaW5lX1NlcGFyYXRvcgBacCxQYXJhZ3JhcGhfU2VwYXJhdG9yAENjLENvbnRyb2wsY250cmwAQ2YsRm9ybWF0AENzLFN1cnJvZ2F0ZQBDbyxQcml2YXRlX1VzZQBMQyxDYXNlZF9MZXR0ZXIATCxMZXR0ZXIATSxNYXJrLENvbWJpbmluZ19NYXJrAE4sTnVtYmVyAFMsU3ltYm9sAFAsUHVuY3R1YXRpb24scHVuY3QAWixTZXBhcmF0b3IAQyxPdGhlcgBBoLsCC7AIDgAAAD4AAADAAQAAAA4AAADwAAAAAH8AAACAAwEAADxBU0NJSV9IZXhfRGlnaXQsQUhleABCaWRpX0NvbnRyb2wsQmlkaV9DAERhc2gARGVwcmVjYXRlZCxEZXAARGlhY3JpdGljLERpYQBFeHRlbmRlcixFeHQASGV4X0RpZ2l0LEhleABJRFNfQmluYXJ5X09wZXJhdG9yLElEU0IASURTX1RyaW5hcnlfT3BlcmF0b3IsSURTVABJZGVvZ3JhcGhpYyxJZGVvAEpvaW5fQ29udHJvbCxKb2luX0MATG9naWNhbF9PcmRlcl9FeGNlcHRpb24sTE9FAE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LE5DaGFyAFBhdHRlcm5fU3ludGF4LFBhdF9TeW4AUGF0dGVybl9XaGl0ZV9TcGFjZSxQYXRfV1MAUXVvdGF0aW9uX01hcmssUU1hcmsAUmFkaWNhbABSZWdpb25hbF9JbmRpY2F0b3IsUkkAU2VudGVuY2VfVGVybWluYWwsU1Rlcm0AU29mdF9Eb3R0ZWQsU0QAVGVybWluYWxfUHVuY3R1YXRpb24sVGVybQBVbmlmaWVkX0lkZW9ncmFwaCxVSWRlbwBWYXJpYXRpb25fU2VsZWN0b3IsVlMAV2hpdGVfU3BhY2Usc3BhY2UAQmlkaV9NaXJyb3JlZCxCaWRpX00ARW1vamkARW1vamlfQ29tcG9uZW50LEVDb21wAEVtb2ppX01vZGlmaWVyLEVNb2QARW1vamlfTW9kaWZpZXJfQmFzZSxFQmFzZQBFbW9qaV9QcmVzZW50YXRpb24sRVByZXMARXh0ZW5kZWRfUGljdG9ncmFwaGljLEV4dFBpY3QARGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCxESQBJRF9TdGFydCxJRFMAQ2FzZV9JZ25vcmFibGUsQ0kAQVNDSUkAQWxwaGFiZXRpYyxBbHBoYQBBbnkAQXNzaWduZWQAQ2FzZWQAQ2hhbmdlc19XaGVuX0Nhc2Vmb2xkZWQsQ1dDRgBDaGFuZ2VzX1doZW5fQ2FzZW1hcHBlZCxDV0NNAENoYW5nZXNfV2hlbl9Mb3dlcmNhc2VkLENXTABDaGFuZ2VzX1doZW5fTkZLQ19DYXNlZm9sZGVkLENXS0NGAENoYW5nZXNfV2hlbl9UaXRsZWNhc2VkLENXVABDaGFuZ2VzX1doZW5fVXBwZXJjYXNlZCxDV1UAR3JhcGhlbWVfQmFzZSxHcl9CYXNlAEdyYXBoZW1lX0V4dGVuZCxHcl9FeHQASURfQ29udGludWUsSURDAExvd2VyY2FzZSxMb3dlcgBNYXRoAFVwcGVyY2FzZSxVcHBlcgBYSURfQ29udGludWUsWElEQwBYSURfU3RhcnQsWElEUwBB4MMCC9QVgQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC/QFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD/ACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUBRIM2AUSDOAFEhjoBRAE+AYXAYQGugogBL0KdAYQBsAGEwLQBhEBKAoRATAKEAE0CLgRWAi7BcgIgAXcChMB3AoTAjAKEgI0CrkGWAoSAlwKEANICLsHSAiAB1wKEAOUCroHyAoQAEgOEADADIsExAy6BMgOugVIDhIB2A64BdwOFwIwDhcCsAy8BtwOBAMMDhMDQA4RA0wOEgNQDhMDVA4QA1wOEQNoDhMDcAy5B3QOFwN0DhADeA4VA3gOEQOADhMDkA4RA5wOEgOgDhMDpA4QA6wOEQO4DhIAJBIEAPwSEhMEGhIDEBoTBzgYgAdAGhMDQBoMDSwcfxEwHgxdPB4EAXgeD0mYHRB2AB0KJjgdEGJMHQg2fBxaCpQeFgKYHvsCmB0QNqAdEoK4HIgHAB0SDwAciAcIHRIPCByIBxAdEgsQHIgHGB0SCxgc+EcgHRILQByIB0gdEgtIHIgHUB0SD1Ac+TNYHgEDcB76A3AeAwNwHvgDdB4BA3Qe+gN0HgMDdB74A3geAQN4HvoDeB4DA3ge+AN8HgEDfByAI4AcgCOQHIAjoB74F7AeAwO4HvgDvB5dA7weAgO8HF8HvBz5E8AeAQPIHvoDyB4DA8ge+A/MHgMD0B66C9QeAwPYHPkP3B4DA+AeuA/kHgMD6Bz4B+wcCgfsHvoP8B4BA/ge+gP4HgMD+B74A/weAQP8Hl4D/Bx4BAAiVhAAIgUAECJfABQiBAAkIl0AJCJmACQiBwAsIhcAMCLEADQiFgA0IscANCJcBDwiXwREIs8AVCIHAFwiVBRwIgcAeCBUCHwgfBSAIg4UiCBVEJQiXACoIGQFACIGAQAi/wEAIGUFBCIHAQQi/QEIILYVCCIFARQiXgEUIlUJGCJcASAiZQEgIl4BICIEASQiAgEkIgQBKCAKBSgiVBEsIH0JNCIFATgiZwE4IgwJPCJVCUQgZAVQIm4BUCBnGVAiXwFcIgQBYCJdAWAiZgFgIl8BYCIEAWQiXQFkImYBZCJvAWQiXAFoIgUBaCJeAWgiZwFoIlQJbCJdAXAiZgFwIl8BcCIEAXQiXQF0ImYBdCJvAXQiXAF4IgUBeCJeAXgiZwF4IFQJfCJlAYgg+gWYIvoBrCL5Bcwi+AIEIvkCCCL4Agwi+AYkIhQCLCLFAiwiFwIsIsQCMCL5AkAi+AJEIvsGRCL4BmAi+QpsIRAGdCEQBnghEAaAIRAGhCEQBogg+AqsIRAK4CCCCuggeQcoInwQYCSNFGgmXwBwJpQQdCStFHwmbwCEJoQQiCSVFJAmZwCYJJQ0nCR+NLQkfDTQJgYA6CbMAgwqZAJ0Kl0CdCpmAnQq+ALcKFQEfC4HAWwuBwKcLgcC8C60EwAutRMILrYTEC4PzxgstheALAx3jCy2I8QuBAAAMg4INDIQLEwyEQhkMIgEcDCLBHAwigR0MIkEeDCIBHwyEACUMI8EmDISAJwyFwCcMhAsrDIRCMQwiATQMIsE0DCKBNQwiQTYMIgE3DIQAPQwgwj0MhIA/DIXAPwwtSkwMH0VRDJ/KUwytFVkMA4dkDEEHgAyJgIMMKcGDDKlBhAyJAIUMKUGFDKnChQyJAIcMj0CHDI2AhwxBEogMAwKRDJkAlAyjRJQMI4OWDC0HmAyvhJsMocKdDLUAnwyzQJ8MhYCfDIMYoAwjQqwMI0WtDJfArwyhBLAMpUGyDJcAswyZQLMMl4CzDJnAswytF7QMhcC/DLMBwAyxwMAMswDBDDFBwQy1wMEMswDCDLFBwgwzAcMMMYHDDIUAxAyxQMQMM4HEDIUAxQy1QMUMt4DFDLXAxQyxAMYMNUHGDLPAxgyxAccMs8DHDLUAyAyzQMgMsYHIDC9CyQwxQcoMtcDKDLEAywyzQMsMtYDLDLHAywwvAcwMtYDMDLPAzAy1AM0MsUDNDLWAzQyFwM0MsQLODLNAzwyxgM8MhcDPDLEB0AyzwNAMsQHRDLXA0QyzANIMhUDSDLWA0gyFwNIMMwHTDLGB0wyzQNQMhYDUDLHA1AyzANUMhUDVDLWA1QyxwNUMIQXWDCWF2AylAtsMmUDcDBeB3AyZAN0Ml0HdDCcB3gyFgt4MicDfDD8E4AyZAOIMm0DiDL+D4gwZQuQMBULlDD9D5gwxwecMhUDoDLGB6AyFQOkMB4HpDIkA6gyXQOoMGYLqDJ2A6wyNwOsMPwjsDAUB8AybgPAMl8HwDJuA8QyZwPEMFwXyDJmA9AwXwfQMGUH1DJfA9QybAPYMmUD2DBeC9gwZgfcMoQT4DCVF+gwlxfwMJUH/DJnA/wwDAacpgQDcKZWB/CkDAf4pAwLXKoFA2iqCFEA+gn9KPoI/aj4CoYo+EAGbPoIvnD6QxbM+lwHAPhnBwD4/QcE+r8LEPoRBxz6tBMg+gUDKPgSDyj6gA8w+oALOPoSAzz4gAdA+IMHQPq6E0T6FwNM+LTHUPq3L9D4vifo+LQL/Pi8vAD+lghc/scAYP68HGT+v/xw/pYE8P69kPT8xIFQ/MZtkPzEBfD+zg3w/sUB+P72Afj+7wH4/swB/PwMFhD+tAYw/FcOMPy1Gjj8DzJE/lcaXP68BnD+FAJ0/L4WdP606oD8vRL0/H2/APx/B1z+tX9g/gQDoPx9P6D8fg/A/H4PyPx+D9D+fgfY/gwf4P4NN4EGRD+dBkoEmRJLAKkQSgUtEEsHSRBLCLkUSgW5FkgBORpKDV3QSw250Hw0AdR+NBnUfDQ11n4MTdR+JFXUfDRp1H40gdRUQJ3WfQy91n0UxdR8NNHUfjTp1lQNBdR9EQ3Wfg0V1H41HdZUHTnWfg1J1H41UdR8NW3UfjWF1Hw1odR+NbnUfDXV1H417dR8NgnUfjYh1Hw2PdR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD/Sb4QvGm+AEHA2QILlFQgAAAAYQACAAQABgC8AwgACgAMABUAlQClALkAwQDDAMcAywDRANcA3QDgAOYA+AAIAQoBcwAQARIBFAEgASwBRAFNAVMBYgFoAWoBdgGSAZQBqQG7AccB0QHVAbkC1wE7ANkB2wG3AOEB/AEMAhgCHQIjAicCowMzAj8CQgJLAk4CUQJdAmACaQJsAm8CdQJ4AoECigKcAp8CowKvArkCxQLJAs0C0QLVAucC7QLxAvUC+QL9AgUDCQMNAxMDFwMbAyMDJwMrAy8DNQM9A0EDSQNNA1EDCw9XA1sDXwNjA2cDawNvA3MDeQN9A4EDhQOJA40DkQOVA5kDnQOhA9wQpQPJA80D2QPdA+ED7wPxAz0ETwSZBPAEAgVKBWQFbAVwBXMFmgX6Bf4FBwYLBhQGGAYeBiIGKAaOBpQGmAaeBqIGqwasA/MGrQP2Bq4D+QavA/wGzAP/Bs0DAgfOAwUHCQcNBxEHhgMyBzUHuQM3BzsHiANTB4kDVgeQA2sHigN3B7ADiQeOA5kHnwejB4wDuAePA7sHtAC+B8AHwgcQIMsHLgDNB88HIADSB9YH2wffB+QH6gfwByAA9gcSIgEIBQgHCB0IJQgnCEMALQgwCJABNgg5CE4ARQhHCEwITghRCFoAqQNaAFMIVwhgCGkAYghlCG8IdAh6CH4IoghJAKQIpgipCFYAqwitCLAItAhYALYIuAi7CMAIwgjFCHYAxwjJCMwI0Ah4ANII1AjXCNsI3gjkCOcI8AjzCPYI+QgCCQYJCwkPCRQJFwkaCSMJLAk7CT4JQQlECUcJSglWCVwJYAliCWQJaAlqCXAJeAl8CYAJhgmJCY8JkQkwAJMJmQmcCZ4JoQmkCWEtzWufn6YJsQm8CccJlQqhChULIAAnCzELjQuhC6ULqQutC7ELtQu5C70LwQvFCyEMNQw5DD0MQQxFDEkMTQxRDFUMWQxvDHEMcwygDLwM3AzkDOwM9Az8DAQNDA0UDSINLg16DYINhQ2JDY0NnQ2xDbUNvA3CDcYNKA4sDjAOMg42DjwOPg5BDkMORg53DnsOiQ6ODpQOnA6jDqkOtA6+DsYOyg7PDtkO3Q7kDuwO8w74DgQPCg8VDxsPIg8oDzMPPQ9FD0wPUQ9XD14PYw9pD3APdg99D4IPiQ+ND54PpA+pD60PuA++D8kP0A/WD9oP4Q/lD+8P+g8AEAQQCRAPEBMQGhAfECMQKRAvEDIQNhA5ED8QRRBZEGEQeRB8EIAQlRChELEQwxDLEM8Q2hDeEOoQ8hD0EAARBREREUERSRFNEVMRVxFaEW4RcRF1EXsRfRGBEYQRjBGSEZYRnBGiEagRqxFvp68RshG2EY0CvhEQEg4TDBSQFJUUUxVsFXIVeBV+FYoVlhUrAKEVuRW9FcEVxRXJFc0V4RXlFUkWYhaIFo4WTBdSF1cXdxd3GH0YERnTGXcafxqdGqIathrAGsYa2hrfGuUa8xojGzAbOBs8G1IbyRvbG90b3xtkMSAcIhwkHCYcKBwqHEgcfhzEHNIc1xzgHOkc+xwEHQkdKR1EHUYdSB1KHUwdTh1QHVIdch10HXYdeB16HYEdgx2FHYcdlh2YHZodnB2eHaAdoh2kHaYdqB2qHawdrh2wHbIdth30A7gdByK6HQIivB3EHfQDxh0HIsgdAiLKHdId9APUHQci1h0CItgd4B30A+IdByLkHQIi5h3uHfQD8B0HIvIdAiL0Hf4dAB4CHgQeBh4IHg4eKx4tBjMePx4sBk8evx7LHt4e8B4DHwUfCR8PHxUfFx8bHx0fJR8oHyofMB8yH7UwOB+QH6Yfqh+sH7Ef/h8PIBAhICEmISAiPiMAAAAAAAAgiCCEMjMggSCnMW8x0DQx0DIz0DRBgEGBQYJBg0GIQYoAAEOnRYBFgUWCRYhJgEmBSYJJiAAAToNPgE+BT4JPg0+IAAAAAFWAVYFVglWIWYEAAAAAYYBhgWGCYYNhiGGKAABjp2WAZYFlgmWIaYBpgWmCaYgAAG6Db4BvgW+Cb4NviAAAAAB1gHWBdYJ1iHmBAAB5iEGEQYZBqEOBQ4JDh0OMRIxFhEWGRYdFqEWMR4JHhkeHR6dIgkmDSYRJhkmoSYdJSmlqSoJLp0yBTKdMjEwAAGsga06BTqdOjLwCbk+ET4ZPi1KBUqdSjFOBU4JTp1OMVKdUjFWDVYRVhlWKVYtVqFeCWYJZiFqBWodajE+bVZtEAH0BRAB+AWQAfgFMSkxqbGpOSk5qbmpBAIxJAIxPAIxVAIzcAITcAIHcAIzcAIDEAIQmAoTGAIRHjEuMT6jqAYTrAYS3AYySAoxqAIxEWkR6ZHpHgU4AgMUAgcYAgdgAgUGPQZFFj0WRSY9JkU+PT5FSj1KRVY9VkVOmVKZIjEEAh0UAp9YAhNUAhE8Ahy4ChFkAhGgAZgJqAHIAeQJ7AoECdwB5ACCGIIcgiiCoIIMgi2MCbABzAHgAlQKAgQCTiIEgxSCBqACBkQOBlQOBlwOBmQOBAAAAnwOBAAAApQOBqQOBygOBAQOYB6QHsAC0ALYAuADKAAEDuAfEB74AxADIAKUDDRMAAQPRANEHxgPAA7oDwQPCAwAAmAO1AxUEgBUEiAAAABMEgQYEiBoEgRgEgCMEhhgEhjgEhjUEgDUEiAAAADMEgVYEiDoEgTgEgEMEhnQEjxYEhhAEhhAEiBUEhtgEiBYEiBcEiBgEhBgEiB4EiOgEiC0EiCMEhCMEiCMEiycEiCsEiGUFggUnBgAsAC0hLQAuIy0nBgBNIU2gTSNN1QZUBgAAAADBBlQG0gZUBigJPAkwCTwJMwk8CRUJACcBJwInBycMJw0nFicaJ74JCQAJGaEJvAmvCbwJMgo8CjgKPAoWCgAmASYGJisKPApHC1YLPgsJAAkZIQs8C5IL1wu+CwgACQAIGUYMVgy/DNUMxgzVDMIMBAAIEz4NCAAJAAgZ2Q3KDcoNDwUSAA8VTQ4yDs0Osg6ZDhIAEghCD7cPTA+3D1EPtw9WD7cPWw+3D0APtQ9xD3IPcQ8AA0EPsg+BD7MPgA+zD4EPcQ+AD5IPtw+cD7cPoQ+3D6YPtw+rD7cPkA+1DyUQLhAFGzUbAAAAAAcbNRsAAAAACRs1GwAAAAALGzUbAAAAAA0bNRsRGzUbOhs1GwAAAAA8GzUbPhs1G0IbNRtBAMYAQgAAAEQARQCOAUcATwAiAlAAUgBUAFUAVwBhAFACUQICHWIAZABlAFkCWwJcAmcAAABrAG0ASwFvAFQCFh0XHXAAdAB1AB0dbwJ2ACUdsgOzA7QDxgPHA2kAcgB1AHYAsgOzA8EDxgPHA1ICYwBVAvAAXAJmAF8CYQJlAmgCaQJqAnsdnQJtAoUdnwJxAnACcgJzAnQCdQJ4AoICgwKrAYkCigIcHYsCjAJ6AJACkQKSArgDQQClQgCHQgCjQgCxxwCBRACHRACjRACxRACnRACtEgGAEgGBRQCtRQCwKAKGRgCHRwCESACHSACjSACISACnSACuSQCwzwCBSwCBSwCjSwCxTACjNh6ETLFMrU2BTYdNo06HTqNOsU6t1QCB1QCITAGATAGBUACBUACHUgCHUgCjWh6EUgCxUwCHUwCjWgGHYAGHYh6HVACHVACjVACxVACtVQCkVQCwVQCtaAGBagGIVoNWo1eAV4FXiFeHV6NYh1iIWYdaglqjWrFosXSId4p5imEAvgJ/AYdBAKNBAInCAIHCAIDCAInCAIOgHoICAYECAYACAYkCAYOgHoZFAKNFAIlFAIPKAIHKAIDKAInKAIO4HoJJAIlJAKNPAKNPAInUAIHUAIDUAInUAIPMHoKgAYGgAYCgAYmgAYOgAaNVAKNVAImvAYGvAYCvAYmvAYOvAaNZAIBZAKNZAIlZAIOxAxMDAB+AAB+BAB/CkQMTAwgfgAgfgQgfwrUDEwMQH4AQH4GVAxMDGB+AGB+BtwOTtwOUIB+AIR+AIB+BIR+BIB/CIR/ClwOTlwOUKB+AKR+AKB+BKR+BKB/CKR/CuQOTuQOUMB+AMR+AMB+BMR+BMB/CMR/CmQOTmQOUOB+AOR+AOB+BOR+BOB/COR/CvwOTvwOUQB+AQB+BnwMTA0gfgEgfgcUDEwNQH4BQH4FQH8KlA5QAAABZH4AAAABZH4EAAABZH8LJA5PJA5RgH4BhH4BgH4FhH4FgH8JhH8KpA5OpA5RoH4BpH4BoH4FpH4FoH8JpH8KxA4C1A4C3A4C5A4C/A4DFA4DJA4AAH0UDIB9FA2AfRQOxA4axA4RwH8WxA8WsA8UAAACxA8K2H8WRA4aRA4SRA4CRA8UgkyCTIMKoAMJ0H8W3A8WuA8UAAAC3A8LGH8WVA4CXA4CXA8W/H4C/H4G/H8K5A4a5A4TKA4AAA7lCykKZBpkEmQD+H4D+H4H+H8LFA4bFA4TLA4AAA8ETwRTFQstCpQalBKUAoQOUqACAhQNgAHwfxckDxc4DxQAAAMkDwvYfxZ8DgKkDgKkDxSCUAiAgICAgICAgICAgsy4uLi4uMiAyIDIgAAAANSA1IDUgAAAAISEAACCFPz8/ISE/MiAAAAAAMGkAADQ1Njc4OSs9KCluMAArABIiPQAoACkAAABhAGUAbwB4AFkCaGtsbW5wc3RSc2EvY2Evc7AAQ2Mvb2MvdbAARkgAHwAAACDfAQEEJE5vUFFSUlJTTVRFTFRNSwDFAEJDAGVFRgBNb9AFRkFYwAOzA5MDoAMRIkRkZWlqMdA3MdA5MdAxMDHQMzLQMzHQNTLQNTPQNTTQNTHQNjXQNjHQODPQODXQODfQODHQSUlJSUlJVlZJVklJVklJSUlYWElYSUlMQ0RNaWlpaWlpaXZ2aXZpaXZpaWlpeHhpeGlpbGNkbTDQM5AhuJIhuJQhuNAhuNQhuNIhuAMiuAgiuAsiuCMiuAAAACUiuCsiKyIrIgAAAC4iLiIuIgAAADwiuEMiuEUiuAAAAEgiuD0AuAAAAGEiuE0iuDwAuD4AuGQiuGUiuHIiuHYiuHoiuIIiuIYiuKIiuKgiuKkiuKsiuHwiuJEiuLIiOAMIMDEAMQAwADIwKAAxACkAKAAxADAAKQAoMjApMQAuADEAMAAuADIwLigAYQApAEEAYQArIgAAAAA6Oj09PT09Pd0quGpWAE4AKDY/WYWMoLo/UQAmLENXbKG2wZtSAF56f52mwc7ntlPIU+NT11YfV+tYAlkKWRVZJ1lzWVBbgFv4Ww9cIlw4XG5ccVzbXeVd8V3+XXJeel5/XvRe/l4LXxNfUF9hX3Nfw18IYjZiS2IvZTRlh2WXZaRluWXgZeVl8GYIZyhnIGtia3lrs2vLa9Rr22sPbBRsNGxrcCpyNnI7cj9yR3JZcltyrHKEc4lz3HTmdBh1H3UodTB1i3WSdXZ2fXaudr927nbbd+J383c6ebh5vnl0est6+XpzfPh8Nn9Rf4p/vX8BgAyAEoAzgH+AiYDjgQAHEBkpODyLj5VNhmuGQIhMiGOIfomLidKJAIo3jEaMVYx4jJ2MZI1wjbONq47KjpuPsI+1j5GQSZHGkcyR0ZF3lYCVHJa2lrmW6JZRl16XYpdpl8uX7ZfzlwGYqJjbmN+YlpmZmayZqJrYmt+aJZsvmzKbPJtam+WcdZ5/nqWeABYeKCxUWGlue5alrej3+xIwAABBU0RTRVNLMJkwAAAAAE0wmTAAAAAATzCZMAAAAABRMJkwAAAAAFMwmTAAAAAAVTCZMAAAAABXMJkwAAAAAFkwmTAAAAAAWzCZMAAAAABdMJkwAAAAAF8wmTAAAAAAYTCZMGQwmTAAAAAAZjCZMAAAAABoMJkwbzCZMHIwmTB1MJkweDCZMHswmTBGMJkwIACZMJ0wmTCIMIowqzCZMAAAAACtMJkwAAAAAK8wmTAAAAAAsTCZMAAAAACzMJkwAAAAALUwmTAAAAAAtzCZMAAAAAC5MJkwAAAAALswmTAAAAAAvTCZMAAAAAC/MJkwAAAAAMEwmTDEMJkwAAAAAMYwmTAAAAAAyDCZMM8wmTDSMJkw1TCZMNgwmTDbMJkwpjCZMO8wmTD9MJkwszDIMAARAAGqAqytAwQFsLGys7S1GgYHCCEJEWERFBFMAAGztLi6v8PFCMnLCQoMDg8TFRcYGRobHiIsMzjd3kNERXBxdH1+gIqNAE6MTglO21YKTi1OC04ydVlOGU4BTilZMFe6TigAKQAAEQIRAxEFEQYRBxEJEQsRDBEOEQ8REBERERIRKAAAEWERKQAoAAIRYREpACgABRFhESkAKAAJEWERKQAoAAsRYREpACgADhFhESkAKAAMEW4RKQAoAAsRaREMEWURqxEpACgACxFpERIRbhEpACgAKQAAToxOCU7bVpRObVEDTmtRXU5BUwhna3A0bChn0ZEfV+VlKmgJZz55DVR5cqGMXXm0UuNOfFRmW+N2AU/HjFRTbXkRT+qB84FPVXxeh2WPe1BURTIAMQAzADAAABEAAgMFBgcJCwwODxAREgARAGECYQNhBWEGYQdhCWELYQxhDhFhEQARDmG3AGkLEQFjAGkLEW4RAE6MTglO21aUTm1RA05rUV1OQVMIZ2twNGwoZ9GRH1flZSpoCWc+eQ1UeXKhjF15tFLYeTd1c1lpkCpRcFPobAWYEU+ZUWNrCk4tTgtO5l3zUztTl1tmW+N2AU/HjFRTHFkzADYANAAwADUwMQAIZzEAMAAIZ0hnZXJnZVZMVESiMAACBAYICQsNDxETFRcZGx0fIiQmKCkqKywtMDM2OTw9Pj9AQkRGR0hJSktNTk9Q5E6MVKEwATBbJwFKNAABUjkBojAAWkmkMAAnTwykMABPHQIFT6gwABEHVCGoMABUA1SkMAZPFQZYPAcARqswAD4YHQBCP1GsMABBRwBHMq4wrDCuMAAdTq0wADg9TwE+E0+tMO0wrTAAQAM8M60wAEA0Txs+rTAAQEIWG7AwADkwpDAMRTwkTwtHGABJrzAAPk0esTAASwgCOhkCSyykMBEAC0e1MAA+DEcrsDAHOkMAuTACOggCOg8HQwC3MBAAEjQRPBMXpDAqHyQrACC7MBZBADgNxDANOADQMAAsHBuiMDIAFyZJrzAlADyzMCEAIDihMDQASCIoozAyAFklpzAvHBAARNUwABQerzApABBNPNowvTC4MCITGiAzDCI7ASJEACFEB6QwOQBPJMgwFCMA2zDzMMkwFCoAEjMiEjMqpDA6AAtJpDA6AEc6Hys6Rwu3MCc8ADA8rzAwAD5E3zDqMNAwDxoALBvhMKwwrDA1ABxHNVAcP6IwQlonQlpJRABRwzAnAAUo6jDpMNQwFwAo1jAVJgAV7DDgMLIwOkEWAEHDMCwABTAAuXAxADAAuXAyADAAuXBoUGFkYUFVYmFyb1ZwY2RtZABtALIASQBVAHNeEGItZoxUJ1ljaw5mu2wqaA9fGk8+eXAAQW4AQbwDQW0AQWsAQUsAQk0AQkcAQmNhbGtjYWxwAEZuAEa8A0a8A2dtAGdrAGdIAHprSHpNSHpHSHpUSHq8AxMhbQATIWQAEyFrABMhZgBtbgBtvANtbQBtYwBtawBtYwAKCk8ACk9tALIAYwAICk8KClAAClBtALMAawBtALMAbQAVInMAbQAVInMAsgBQYWtQYU1QYUdQYXJhZHJhZNFzcgBhAGQAFSJzALIAcABzbgBzvANzbQBzcABWbgBWvANWbQBWawBWTQBWcABXbgBXvANXbQBXawBXTQBXawCpA00AqQNhLm0uQnFjY2NkQ9FrZ0NvLmRCR3loYUhQaW5LS0tNa3RsbWxubG9nbHhtYm1pbG1vbFBIcC5tLlBQTVBSc3JTdldiVtFtQdFtMQDlZTEAMADlZTIAMADlZTMAMADlZWdhbEoETARDRlEmAVMBJ6c3q2sCUqtIjPRmyo7IjNFuMk7lU5yfnJ9RWdGRh1VIWfZhaXaFfz+Guof4iI+QAmobbdlw3nM9hGqR8ZmCTnVTBGsbci2GHp5QXetvzYVkicli2IEfiMpeF2dqbfxyzpCGT7dR3lLEZNNqEHLndgGABoZchu+NMpdvm/qdjHh/eaB9yYMEk3+e1orfWARfYHx+gGJyynjCjPeW2FhiXBNq2m0Pby99N35LltJSi4DcUcxRHHq+ffGDdZaAi89iAmr+ijlO51sSYIdzcHUXU/t4v0+pXw1OzGx4ZSJ9w1NeWAF3SYSqirprsI+IbP5i5YKgY2V1rk5pUclRgWjnfG+C0orPkfVSQlRzWexexWX+byp5rZVqmpeezp6bUsZmd2tij3RekGEAYppkI29JcYl0ynn0fW+AJo/uhCOQSpMXUqNSvVTIcMKIqorJXvVfe2Ouaz58dXPkTvlW51u6XRxgsnNpdJp/RoA0kvaWSJcYmItPrnm0kbiW4WCGTtpQ7ls/XJllAmrOcUJ2/IR8kI2fiGYulolSe2fzZ0FtnG4JdFl1a3gQfV6YbVEuYniWK1AZXeptKo+LX0RhF2iHc4aWKVIPVGVcE2ZOZ6ho5WwGdOJ1eX/PiOGIzJHilj9Tum4dVNBxmHT6haOWV5yfnpdny23ogct6IHuSfMBymXBYi8BONoM6UgdSpl7TYtZ8hVsebbRmO49MiE2Wi4nTXkBRwFUAAAAAWlgAAHRmAAAAAN5RKnPKdjx5XnlleY95Vpe+fL1/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\";if(!T(U)){var ha=U;U=c.locateFile?c.locateFile(ha,t):t+ha}\nfunction ia(){var a=U;try{if(a==U&&v)return new Uint8Array(v);if(T(a))try{var b=ja(a.slice(37)),d=new Uint8Array(b.length);for(a=0;a<b.length;++a)d[a]=b.charCodeAt(a);var e=d}catch(g){throw Error(\"Converting base64 string to bytes failed.\");}else e=void 0;var f=e;if(f)return f;throw\"both async and sync fetching of the wasm failed\";}catch(g){w(g)}}\nfunction ka(){return v||\"function\"!=typeof fetch?Promise.resolve().then(function(){return ia()}):fetch(U,{credentials:\"same-origin\"}).then(function(a){if(!a.ok)throw\"failed to load wasm binary file at '\"+U+\"'\";return a.arrayBuffer()}).catch(function(){return ia()})}function V(a){for(;0<a.length;){var b=a.shift();if(\"function\"==typeof b)b(c);else{var d=b.C;\"number\"==typeof d?void 0===b.A?O.get(d)():O.get(d)(b.A):d(void 0===b.A?null:b.A)}}}\nfunction la(a,b,d){function e(q){return(q=q.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?q[1]:\"GMT\"}var f=(new Date).getFullYear(),g=new Date(f,0,1),k=new Date(f,6,1);f=g.getTimezoneOffset();var m=k.getTimezoneOffset();N[a>>2]=60*Math.max(f,m);N[b>>2]=Number(f!=m);a=e(g);b=e(k);a=K(a);b=K(b);m<f?(N[d>>2]=a,N[d+4>>2]=b):(N[d>>2]=b,N[d+4>>2]=a)}function W(a,b,d){W.B||(W.B=!0,la(a,b,d))}function X(a){var b=J(a)+1,d=L(b);B(a,C,d,b);return d}function ma(){}var na=[null,[],[]];\nma=(a,b,d)=>{a=G(a);b=null!==b?JSON.parse(G(b)):[];try{const e=c.externalCall(a,b);return e?X(e):null}catch(e){return c.HEAPU8[d]=1,X(e.message)}};\nvar ja=\"function\"==typeof atob?atob:function(a){var b=\"\",d=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));var k=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(d++));e=e<<2|f>>4;\nf=(f&15)<<4|g>>2;var m=(g&3)<<6|k;b+=String.fromCharCode(e);64!==g&&(b+=String.fromCharCode(f));64!==k&&(b+=String.fromCharCode(m))}while(d<a.length);return b},oa={a:function(a,b,d,e){w(\"Assertion failed: \"+G(a)+\", at: \"+[b?G(b):\"unknown filename\",d,e?G(e):\"unknown function\"])},d:function(){return Date.now()},e:function(a,b){a=new Date(1E3*N[a>>2]);N[b>>2]=a.getSeconds();N[b+4>>2]=a.getMinutes();N[b+8>>2]=a.getHours();N[b+12>>2]=a.getDate();N[b+16>>2]=a.getMonth();N[b+20>>2]=a.getFullYear()-1900;\nN[b+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);N[b+28>>2]=(a.getTime()-d.getTime())/864E5|0;N[b+36>>2]=-(60*a.getTimezoneOffset());var e=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();d=d.getTimezoneOffset();N[b+32>>2]=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0},f:W,b:function(){w(\"\")},h:ma,g:function(a,b){a=G(a);let d;try{d=window.JSON.parse(a)}catch(e){d=a}0!==b?window.alert(a):window.console.log(\"DUMP\",d)},j:function(a){var b=C.length;a>>>=0;if(2147483648<a)return!1;for(var d=\n1;4>=d;d*=2){var e=b*(1+.2/d);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);f=f.min.call(f,2147483648,e+(65536-e%65536)%65536);a:{try{x.grow(f-M.byteLength+65535>>>16);ba();var g=1;break a}catch(k){}g=void 0}if(g)return!0}return!1},c:function(a,b,d,e){for(var f=0,g=0;g<d;g++){var k=N[b>>2],m=N[b+4>>2];b+=8;for(var q=0;q<m;q++){var l=C[k+q],p=na[a];0===l||10===l?((1===a?aa:u)(I(p,0)),p.length=0):p.push(l)}f+=m}N[e>>2]=f;return 0},k:function(a){a=G(a);window.console.log(a)},i:function(a){a=G(a);\nreturn Date.parse(a)},l:function(a,b,d,e){a=G(a);b=G(b);d=G(d);d=`Quickjs -- ${a}: ${b}\\n${d}`;0!==e?window.alert(d):window.console.error(d)}};\n(function(){function a(f){c.asm=f.exports;x=c.asm.m;ba();O=c.asm.v;da.unshift(c.asm.n);P--;c.monitorRunDependencies&&c.monitorRunDependencies(P);0==P&&(null!==Q&&(clearInterval(Q),Q=null),R&&(f=R,R=null,f()))}function b(f){a(f.instance)}function d(f){return ka().then(function(g){return WebAssembly.instantiate(g,e)}).then(function(g){return g}).then(f,function(g){u(\"failed to asynchronously prepare wasm: \"+g);w(g)})}var e={a:oa};P++;c.monitorRunDependencies&&c.monitorRunDependencies(P);if(c.instantiateWasm)try{return c.instantiateWasm(e,\na)}catch(f){return u(\"Module.instantiateWasm callback failed with error: \"+f),!1}(function(){return v||\"function\"!=typeof WebAssembly.instantiateStreaming||T(U)||\"function\"!=typeof fetch?d(b):fetch(U,{credentials:\"same-origin\"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(b,function(g){u(\"wasm streaming compile failed: \"+g);u(\"falling back to ArrayBuffer instantiation\");return d(b)})})})().catch(n);return{}})();\nc.___wasm_call_ctors=function(){return(c.___wasm_call_ctors=c.asm.n).apply(null,arguments)};c._evalInSandbox=function(){return(c._evalInSandbox=c.asm.o).apply(null,arguments)};c._nukeSandbox=function(){return(c._nukeSandbox=c.asm.p).apply(null,arguments)};c._init=function(){return(c._init=c.asm.q).apply(null,arguments)};c._commFun=function(){return(c._commFun=c.asm.r).apply(null,arguments)};c._dumpMemoryUse=function(){return(c._dumpMemoryUse=c.asm.s).apply(null,arguments)};\nvar L=c._malloc=function(){return(L=c._malloc=c.asm.t).apply(null,arguments)};c._free=function(){return(c._free=c.asm.u).apply(null,arguments)};var E=c.stackSave=function(){return(E=c.stackSave=c.asm.w).apply(null,arguments)},F=c.stackRestore=function(){return(F=c.stackRestore=c.asm.x).apply(null,arguments)},A=c.stackAlloc=function(){return(A=c.stackAlloc=c.asm.y).apply(null,arguments)};c.ccall=z;\nc.cwrap=function(a,b,d,e){d=d||[];var f=d.every(function(g){return\"number\"===g});return\"string\"!==b&&f&&!e?c[\"_\"+a]:function(){return z(a,b,d,arguments,e)}};c.stringToNewUTF8=X;var Y;R=function pa(){Y||Z();Y||(R=pa)};\nfunction Z(){function a(){if(!Y&&(Y=!0,c.calledRun=!0,!y)){V(da);h(c);if(c.onRuntimeInitialized)c.onRuntimeInitialized();if(c.postRun)for(\"function\"==typeof c.postRun&&(c.postRun=[c.postRun]);c.postRun.length;){var b=c.postRun.shift();ea.unshift(b)}V(ea)}}if(!(0<P)){if(c.preRun)for(\"function\"==typeof c.preRun&&(c.preRun=[c.preRun]);c.preRun.length;)fa();V(ca);0<P||(c.setStatus?(c.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){c.setStatus(\"\")},1);a()},1)):a())}}c.run=Z;\nif(c.preInit)for(\"function\"==typeof c.preInit&&(c.preInit=[c.preInit]);0<c.preInit.length;)c.preInit.pop()();Z();\n\n\n return Module.ready\n}\n);\n})();\nexport default Module;","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// In mozilla-central, this file is loaded as non-module script,\n// so it mustn't have any dependencies.\n\nclass SandboxSupportBase {\n /**\n * @param {DOMWindow} - win\n */\n constructor(win) {\n this.win = win;\n this.timeoutIds = new Map();\n\n // Will be assigned after the sandbox is initialized\n this.commFun = null;\n }\n\n destroy() {\n this.commFunc = null;\n this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));\n this.timeoutIds = null;\n }\n\n /**\n * @param {Object} val - Export a value in the sandbox.\n */\n exportValueToSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {Object} val - Import a value from the sandbox.\n */\n importValueFromSandbox(val) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} errorMessage - Create an error in the sandbox.\n */\n createErrorForSandbox(errorMessage) {\n throw new Error(\"Not implemented\");\n }\n\n /**\n * @param {String} name - Name of the function to call in the sandbox\n * @param {Array<Object>} args - Arguments of the function.\n */\n callSandboxFunction(name, args) {\n try {\n args = this.exportValueToSandbox(args);\n this.commFun(name, args);\n } catch (e) {\n this.win.console.error(e);\n }\n }\n\n createSandboxExternals() {\n // All the functions in externals object are called\n // from the sandbox.\n const externals = {\n setTimeout: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setTimeout(() => {\n this.timeoutIds.delete(callbackId);\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: false,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearTimeout: id => {\n this.win.clearTimeout(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n setInterval: (callbackId, nMilliseconds) => {\n if (\n typeof callbackId !== \"number\" ||\n typeof nMilliseconds !== \"number\"\n ) {\n return;\n }\n const id = this.win.setInterval(() => {\n this.callSandboxFunction(\"timeoutCb\", {\n callbackId,\n interval: true,\n });\n }, nMilliseconds);\n this.timeoutIds.set(callbackId, id);\n },\n clearInterval: id => {\n this.win.clearInterval(this.timeoutIds.get(id));\n this.timeoutIds.delete(id);\n },\n alert: cMsg => {\n if (typeof cMsg !== \"string\") {\n return;\n }\n this.win.alert(cMsg);\n },\n confirm: cMsg => {\n if (typeof cMsg !== \"string\") {\n return false;\n }\n return this.win.confirm(cMsg);\n },\n prompt: (cQuestion, cDefault) => {\n if (typeof cQuestion !== \"string\" || typeof cDefault !== \"string\") {\n return null;\n }\n return this.win.prompt(cQuestion, cDefault);\n },\n parseURL: cUrl => {\n const url = new this.win.URL(cUrl);\n const props = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"origin\",\n \"password\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\",\n \"searchParams\",\n \"username\",\n ];\n\n return Object.fromEntries(\n props.map(name => [name, url[name].toString()])\n );\n },\n send: data => {\n if (!data) {\n return;\n }\n const event = new this.win.CustomEvent(\"updatefromsandbox\", {\n detail: this.importValueFromSandbox(data),\n });\n this.win.dispatchEvent(event);\n },\n };\n Object.setPrototypeOf(externals, null);\n\n return (name, args) => {\n try {\n const result = externals[name](...args);\n return this.exportValueToSandbox(result);\n } catch (error) {\n throw this.createErrorForSandbox(error?.toString() ?? \"\");\n }\n };\n }\n}\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n exports.SandboxSupportBase = SandboxSupportBase;\n} else {\n /* eslint-disable-next-line no-unused-vars, no-var */\n var EXPORTED_SYMBOLS = [\"SandboxSupportBase\"];\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ModuleLoader from \"../external/quickjs/quickjs-eval.js\";\nimport { SandboxSupportBase } from \"./pdf.sandbox.external.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nclass SandboxSupport extends SandboxSupportBase {\n exportValueToSandbox(val) {\n // The communication with the Quickjs sandbox is based on strings\n // So we use JSON.stringfy to serialize\n return JSON.stringify(val);\n }\n\n importValueFromSandbox(val) {\n return val;\n }\n\n createErrorForSandbox(errorMessage) {\n return new Error(errorMessage);\n }\n}\n\nclass Sandbox {\n constructor(win, module) {\n this.support = new SandboxSupport(win, this);\n\n // The \"external\" functions created in pdf.sandbox.external.js\n // are finally used here:\n // https://github.com/mozilla/pdf.js.quickjs/blob/main/src/myjs.js\n // They're called from the sandbox only.\n module.externalCall = this.support.createSandboxExternals();\n\n this._module = module;\n\n // 0 to display error using console.error\n // else display error using window.alert\n this._alertOnError = 0;\n }\n\n create(data) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\"nukeSandbox\", null, []);\n }\n const code = [PDFJSDev.eval(\"PDF_SCRIPTING_JS_SOURCE\")];\n\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n code.push(\n `globalThis.sendResultForTesting = callExternalFunction.bind(null, \"send\");`\n );\n } else {\n code.push(\"delete dump;\");\n }\n\n let success = false;\n let buf = 0;\n try {\n const sandboxData = JSON.stringify(data);\n // \"pdfjsScripting.initSandbox...\" MUST be the last line to be evaluated\n // since the returned value is used for the communication.\n code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\n buf = this._module.stringToNewUTF8(code.join(\"\\n\"));\n\n success = !!this._module.ccall(\n \"init\",\n \"number\",\n [\"number\", \"number\"],\n [buf, this._alertOnError]\n );\n } catch (error) {\n console.error(error);\n } finally {\n if (buf) {\n this._module.ccall(\"free\", \"number\", [\"number\"], [buf]);\n }\n }\n\n if (success) {\n this.support.commFun = this._module.cwrap(\"commFun\", null, [\n \"string\",\n \"string\",\n ]);\n } else {\n this.nukeSandbox();\n throw new Error(\"Cannot start sandbox\");\n }\n }\n\n dispatchEvent(event) {\n this.support?.callSandboxFunction(\"dispatchEvent\", event);\n }\n\n dumpMemoryUse() {\n if (this._module) {\n this._module.ccall(\"dumpMemoryUse\", null, []);\n }\n }\n\n nukeSandbox() {\n if (this._module !== null) {\n this.support.destroy();\n this.support = null;\n this._module.ccall(\"nukeSandbox\", null, []);\n this._module = null;\n }\n }\n\n evalForTesting(code, key) {\n if (PDFJSDev.test(\"!PRODUCTION || TESTING\")) {\n this._module.ccall(\n \"evalInSandbox\",\n null,\n [\"string\", \"int\"],\n [\n `try {\n sendResultForTesting([{ id: \"${key}\", result: ${code} }]);\n } catch (error) {\n sendResultForTesting([{ id: \"${key}\", result: error.message }]);\n }`,\n this._alertOnError,\n ]\n );\n } else {\n throw new Error(\"Not implemented: evalForTesting\");\n }\n }\n}\n\nfunction QuickJSSandbox() {\n return ModuleLoader().then(module => {\n return new Sandbox(window, module);\n });\n}\n\nexport { QuickJSSandbox };\n"],"names":["Module","_scriptDir","document","currentScript","src","undefined","c","h","n","ready","Promise","a","b","r","Object","assign","t","indexOf","substr","replace","lastIndexOf","aa","print","console","log","bind","u","printErr","warn","v","wasmBinary","noExitRuntime","WebAssembly","w","x","y","z","d","e","f","string","l","p","S","length","A","B","C","array","D","set","g","k","m","q","E","apply","F","G","H","TextDecoder","I","NaN","buffer","decode","subarray","String","fromCharCode","charCodeAt","J","K","L","M","N","ba","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","Uint8Array","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","O","ca","da","ea","fa","preRun","shift","unshift","P","Q","R","onAbort","RuntimeError","T","startsWith","U","ha","locateFile","ia","ja","slice","Error","ka","fetch","resolve","then","credentials","ok","arrayBuffer","catch","V","get","la","toTimeString","match","Date","getFullYear","getTimezoneOffset","Math","max","Number","W","X","ma","na","JSON","parse","externalCall","message","atob","charAt","oa","now","getSeconds","getMinutes","getHours","getDate","getMonth","getDay","getTime","min","window","alert","j","call","grow","byteLength","push","i","error","asm","exports","monitorRunDependencies","clearInterval","instance","instantiate","instantiateWasm","instantiateStreaming","___wasm_call_ctors","arguments","_evalInSandbox","o","_nukeSandbox","_init","_commFun","_dumpMemoryUse","s","_malloc","_free","stackSave","stackRestore","stackAlloc","ccall","cwrap","every","stringToNewUTF8","Y","pa","Z","calledRun","onRuntimeInitialized","postRun","setStatus","setTimeout","run","preInit","pop","SandboxSupportBase","constructor","win","timeoutIds","Map","commFun","destroy","commFunc","forEach","_","id","clearTimeout","exportValueToSandbox","val","importValueFromSandbox","createErrorForSandbox","errorMessage","callSandboxFunction","name","args","createSandboxExternals","externals","callbackId","nMilliseconds","delete","interval","setInterval","cMsg","confirm","prompt","cQuestion","cDefault","parseURL","cUrl","url","URL","props","fromEntries","map","toString","send","data","event","CustomEvent","detail","dispatchEvent","setPrototypeOf","result","pdfjsVersion","pdfjsBuild","SandboxSupport","stringify","Sandbox","module","support","_module","_alertOnError","create","code","success","buf","sandboxData","join","nukeSandbox","dumpMemoryUse","evalForTesting","key","QuickJSSandbox","ModuleLoader"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/build/pdf.worker.js b/js/pdfjs/build/pdf.worker.js
index 5c31a84..ec4b7cf 100644
--- a/js/pdfjs/build/pdf.worker.js
+++ b/js/pdfjs/build/pdf.worker.js
@@ -1,6 +1,6 @@
/**
* @licstart The following is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*
* Copyright 2022 Mozilla Foundation
*
@@ -17,7 +17,7 @@
* limitations under the License.
*
* @licend The above is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*/
(function webpackUniversalModuleDefinition(root, factory) {
@@ -29,7 +29,7 @@
exports["pdfjs-dist/build/pdf.worker"] = factory();
else
root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory();
-})(this, function() {
+})(this, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ([
@@ -50,15 +50,15 @@ var _primitives = __w_pdfjs_require__(5);
var _pdf_manager = __w_pdfjs_require__(6);
-var _cleanup_helper = __w_pdfjs_require__(66);
+var _cleanup_helper = __w_pdfjs_require__(67);
-var _writer = __w_pdfjs_require__(72);
+var _writer = __w_pdfjs_require__(73);
var _is_node = __w_pdfjs_require__(4);
-var _message_handler = __w_pdfjs_require__(100);
+var _message_handler = __w_pdfjs_require__(102);
-var _worker_stream = __w_pdfjs_require__(101);
+var _worker_stream = __w_pdfjs_require__(103);
var _core_utils = __w_pdfjs_require__(8);
@@ -100,7 +100,7 @@ class WorkerMessageHandler {
}
testMessageProcessed = true;
- handler.send("test", data instanceof Uint8Array && data[0] === 255);
+ handler.send("test", data instanceof Uint8Array);
});
handler.on("configure", function wphConfigure(data) {
(0, _util.setVerbosityLevel)(data.verbosity);
@@ -117,7 +117,7 @@ class WorkerMessageHandler {
const WorkerTasks = [];
const verbosity = (0, _util.getVerbosityLevel)();
const apiVersion = docParams.apiVersion;
- const workerVersion = '2.13.216';
+ const workerVersion = '2.14.305';
if (apiVersion !== workerVersion) {
throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
@@ -719,7 +719,7 @@ if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "unde
Object.defineProperty(exports, "__esModule", ({
value: true
}));
-exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
@@ -733,7 +733,6 @@ exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isArrayEqual = isArrayEqual;
exports.isAscii = isAscii;
-exports.isSameOrigin = isSameOrigin;
exports.objectFromMap = objectFromMap;
exports.objectSize = objectSize;
exports.setVerbosityLevel = setVerbosityLevel;
@@ -1123,23 +1122,6 @@ function assert(cond, msg) {
}
}
-function isSameOrigin(baseUrl, otherUrl) {
- let base;
-
- try {
- base = new URL(baseUrl);
-
- if (!base.origin || base.origin === "null") {
- return false;
- }
- } catch (e) {
- return false;
- }
-
- const other = new URL(otherUrl, base);
- return base.origin === other.origin;
-}
-
function _isValidProtocol(url) {
if (!url) {
return false;
@@ -1393,14 +1375,6 @@ function isLittleEndian() {
return view32[0] === 1;
}
-const IsLittleEndianCached = {
- get value() {
- return shadow(this, "value", isLittleEndian());
- }
-
-};
-exports.IsLittleEndianCached = IsLittleEndianCached;
-
function isEvalSupported() {
try {
new Function("");
@@ -1410,13 +1384,22 @@ function isEvalSupported() {
}
}
-const IsEvalSupportedCached = {
- get value() {
- return shadow(this, "value", isEvalSupported());
+class FeatureTest {
+ static get isLittleEndian() {
+ return shadow(this, "isLittleEndian", isLittleEndian());
}
-};
-exports.IsEvalSupportedCached = IsEvalSupportedCached;
+ static get isEvalSupported() {
+ return shadow(this, "isEvalSupported", isEvalSupported());
+ }
+
+ static get isOffscreenCanvasSupported() {
+ return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined");
+ }
+
+}
+
+exports.FeatureTest = FeatureTest;
const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
class Util {
@@ -1424,6 +1407,60 @@ class Util {
return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
}
+ static scaleMinMax(transform, minMax) {
+ let temp;
+
+ if (transform[0]) {
+ if (transform[0] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+
+ minMax[0] *= transform[0];
+ minMax[1] *= transform[0];
+
+ if (transform[3] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+
+ minMax[2] *= transform[3];
+ minMax[3] *= transform[3];
+ } else {
+ temp = minMax[0];
+ minMax[0] = minMax[2];
+ minMax[2] = temp;
+ temp = minMax[1];
+ minMax[1] = minMax[3];
+ minMax[3] = temp;
+
+ if (transform[1] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+
+ minMax[2] *= transform[1];
+ minMax[3] *= transform[1];
+
+ if (transform[2] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+
+ minMax[0] *= transform[2];
+ minMax[1] *= transform[2];
+ }
+
+ minMax[0] += transform[4];
+ minMax[1] += transform[4];
+ minMax[2] += transform[5];
+ minMax[3] += transform[5];
+ }
+
static transform(m1, m2) {
return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
}
@@ -1488,31 +1525,21 @@ class Util {
}
static intersect(rect1, rect2) {
- function compare(a, b) {
- return a - b;
- }
+ const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));
+ const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));
- const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
- const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
- const result = [];
- rect1 = Util.normalizeRect(rect1);
- rect2 = Util.normalizeRect(rect2);
-
- if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
- result[0] = orderedX[1];
- result[2] = orderedX[2];
- } else {
+ if (xLow > xHigh) {
return null;
}
- if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
- result[1] = orderedY[1];
- result[3] = orderedY[2];
- } else {
+ const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));
+ const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));
+
+ if (yLow > yHigh) {
return null;
}
- return result;
+ return [xLow, yLow, xHigh, yHigh];
}
static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {
@@ -2027,10 +2054,8 @@ class RefSet {
this._set.delete(ref.toString());
}
- forEach(callback) {
- for (const ref of this._set.values()) {
- callback(ref);
- }
+ [Symbol.iterator]() {
+ return this._set.values();
}
clear() {
@@ -2066,10 +2091,8 @@ class RefSetCache {
this._map.set(ref.toString(), this.get(aliasRef));
}
- forEach(callback) {
- for (const value of this._map.values()) {
- callback(value);
- }
+ [Symbol.iterator]() {
+ return this._map.values();
}
clear() {
@@ -2155,7 +2178,8 @@ class BasePdfManager {
}
get docBaseUrl() {
- return this._docBaseUrl;
+ const catalog = this.pdfDocument.catalog;
+ return (0, _util.shadow)(this, "docBaseUrl", catalog.baseUrl || this._docBaseUrl);
}
onLoadedStream() {
@@ -2488,7 +2512,7 @@ class ChunkedStream extends _stream.Stream {
return this.bytes[this.pos++];
}
- getBytes(length, forceClamped = false) {
+ getBytes(length) {
const bytes = this.bytes;
const pos = this.pos;
const strEnd = this.end;
@@ -2498,8 +2522,7 @@ class ChunkedStream extends _stream.Stream {
this.ensureRange(pos, strEnd);
}
- const subarray = bytes.subarray(pos, strEnd);
- return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
+ return bytes.subarray(pos, strEnd);
}
let end = pos + length;
@@ -2513,8 +2536,7 @@ class ChunkedStream extends _stream.Stream {
}
this.pos = end;
- const subarray = bytes.subarray(pos, end);
- return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
+ return bytes.subarray(pos, end);
}
getByteRange(begin, end) {
@@ -3426,7 +3448,7 @@ class BaseStream {
(0, _util.unreachable)("Abstract method `getByte` called");
}
- getBytes(length, forceClamped = false) {
+ getBytes(length) {
(0, _util.unreachable)("Abstract method `getBytes` called");
}
@@ -3440,8 +3462,8 @@ class BaseStream {
return peekedByte;
}
- peekBytes(length, forceClamped = false) {
- const bytes = this.getBytes(length, forceClamped);
+ peekBytes(length) {
+ const bytes = this.getBytes(length);
this.pos -= bytes.length;
return bytes;
}
@@ -3470,7 +3492,7 @@ class BaseStream {
}
getString(length) {
- return (0, _util.bytesToString)(this.getBytes(length, false));
+ return (0, _util.bytesToString)(this.getBytes(length));
}
skip(n) {
@@ -3538,14 +3560,13 @@ class Stream extends _base_stream.BaseStream {
return this.bytes[this.pos++];
}
- getBytes(length, forceClamped = false) {
+ getBytes(length) {
const bytes = this.bytes;
const pos = this.pos;
const strEnd = this.end;
if (!length) {
- const subarray = bytes.subarray(pos, strEnd);
- return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
+ return bytes.subarray(pos, strEnd);
}
let end = pos + length;
@@ -3555,8 +3576,7 @@ class Stream extends _base_stream.BaseStream {
}
this.pos = end;
- const subarray = bytes.subarray(pos, end);
- return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
+ return bytes.subarray(pos, end);
}
getByteRange(begin, end) {
@@ -3624,21 +3644,23 @@ var _primitives = __w_pdfjs_require__(5);
var _xfa_fonts = __w_pdfjs_require__(12);
-var _stream = __w_pdfjs_require__(10);
-
var _annotation = __w_pdfjs_require__(22);
var _base_stream = __w_pdfjs_require__(9);
-var _crypto = __w_pdfjs_require__(73);
+var _crypto = __w_pdfjs_require__(74);
-var _catalog = __w_pdfjs_require__(64);
+var _catalog = __w_pdfjs_require__(65);
-var _cleanup_helper = __w_pdfjs_require__(66);
+var _cleanup_helper = __w_pdfjs_require__(67);
+
+var _dataset_reader = __w_pdfjs_require__(100);
var _parser = __w_pdfjs_require__(27);
-var _object_loader = __w_pdfjs_require__(71);
+var _stream = __w_pdfjs_require__(10);
+
+var _object_loader = __w_pdfjs_require__(72);
var _operator_list = __w_pdfjs_require__(62);
@@ -3646,11 +3668,11 @@ var _evaluator = __w_pdfjs_require__(25);
var _decode_stream = __w_pdfjs_require__(29);
-var _struct_tree = __w_pdfjs_require__(70);
+var _struct_tree = __w_pdfjs_require__(71);
-var _factory = __w_pdfjs_require__(75);
+var _factory = __w_pdfjs_require__(76);
-var _xref = __w_pdfjs_require__(99);
+var _xref = __w_pdfjs_require__(101);
const DEFAULT_USER_UNIT = 1.0;
const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
@@ -4112,17 +4134,7 @@ function find(stream, signature, limit = 1024, backwards = false) {
}
class PDFDocument {
- constructor(pdfManager, arg) {
- let stream;
-
- if (arg instanceof _base_stream.BaseStream) {
- stream = arg;
- } else if ((0, _util.isArrayBuffer)(arg)) {
- stream = new _stream.Stream(arg);
- } else {
- throw new Error("PDFDocument: Unknown argument type");
- }
-
+ constructor(pdfManager, stream) {
if (stream.length <= 0) {
throw new _util.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");
}
@@ -4309,7 +4321,7 @@ class PDFDocument {
});
}
- get xfaData() {
+ get _xfaStreams() {
const acroForm = this.catalog.acroForm;
if (!acroForm) {
@@ -4329,13 +4341,8 @@ class PDFDocument {
};
if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) {
- try {
- entries["xdp:xdp"] = (0, _util.stringToUTF8String)(xfa.getString());
- return entries;
- } catch (_) {
- (0, _util.warn)("XFA - Invalid utf-8 string.");
- return null;
- }
+ entries["xdp:xdp"] = xfa;
+ return entries;
}
if (!Array.isArray(xfa) || xfa.length === 0) {
@@ -4363,15 +4370,64 @@ class PDFDocument {
continue;
}
+ entries[name] = data;
+ }
+
+ return entries;
+ }
+
+ get xfaDatasets() {
+ const streams = this._xfaStreams;
+
+ if (!streams) {
+ return (0, _util.shadow)(this, "xfaDatasets", null);
+ }
+
+ for (const key of ["datasets", "xdp:xdp"]) {
+ const stream = streams[key];
+
+ if (!stream) {
+ continue;
+ }
+
+ try {
+ const str = (0, _util.stringToUTF8String)(stream.getString());
+ const data = {
+ [key]: str
+ };
+ return (0, _util.shadow)(this, "xfaDatasets", new _dataset_reader.DatasetReader(data));
+ } catch (_) {
+ (0, _util.warn)("XFA - Invalid utf-8 string.");
+ break;
+ }
+ }
+
+ return (0, _util.shadow)(this, "xfaDatasets", null);
+ }
+
+ get xfaData() {
+ const streams = this._xfaStreams;
+
+ if (!streams) {
+ return null;
+ }
+
+ const data = Object.create(null);
+
+ for (const [key, stream] of Object.entries(streams)) {
+ if (!stream) {
+ continue;
+ }
+
try {
- entries[name] = (0, _util.stringToUTF8String)(data.getString());
+ data[key] = (0, _util.stringToUTF8String)(stream.getString());
} catch (_) {
(0, _util.warn)("XFA - Invalid utf-8 string.");
return null;
}
}
- return entries;
+ return data;
}
get xfaFactory() {
@@ -18147,28 +18203,30 @@ var _base_stream = __w_pdfjs_require__(9);
var _bidi = __w_pdfjs_require__(60);
-var _catalog = __w_pdfjs_require__(64);
+var _catalog = __w_pdfjs_require__(65);
var _colorspace = __w_pdfjs_require__(24);
-var _file_spec = __w_pdfjs_require__(67);
+var _file_spec = __w_pdfjs_require__(68);
-var _object_loader = __w_pdfjs_require__(71);
+var _object_loader = __w_pdfjs_require__(72);
var _operator_list = __w_pdfjs_require__(62);
var _stream = __w_pdfjs_require__(10);
-var _writer = __w_pdfjs_require__(72);
+var _writer = __w_pdfjs_require__(73);
+
+var _factory = __w_pdfjs_require__(76);
-var _factory = __w_pdfjs_require__(75);
+const LINE_FACTOR = 1.35;
class AnnotationFactory {
static create(xref, ref, pdfManager, idFactory, collectFields) {
- return Promise.all([pdfManager.ensureCatalog("acroForm"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex]));
+ return Promise.all([pdfManager.ensureCatalog("acroForm"), pdfManager.ensureCatalog("baseUrl"), pdfManager.ensureDoc("xfaDatasets"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, baseUrl, xfaDatasets, pageIndex]) => pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex]));
}
- static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) {
+ static _create(xref, ref, pdfManager, idFactory, acroForm, xfaDatasets, collectFields, pageIndex = -1) {
const dict = xref.fetchIfRef(ref);
if (!(dict instanceof _primitives.Dict)) {
@@ -18186,6 +18244,7 @@ class AnnotationFactory {
id,
pdfManager,
acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty,
+ xfaDatasets,
collectFields,
pageIndex
};
@@ -18552,6 +18611,37 @@ class Annotation {
this.color = getRgbColor(color);
}
+ setLineEndings(lineEndings) {
+ this.lineEndings = ["None", "None"];
+
+ if (Array.isArray(lineEndings) && lineEndings.length === 2) {
+ for (let i = 0; i < 2; i++) {
+ const obj = lineEndings[i];
+
+ if (obj instanceof _primitives.Name) {
+ switch (obj.name) {
+ case "None":
+ continue;
+
+ case "Square":
+ case "Circle":
+ case "Diamond":
+ case "OpenArrow":
+ case "ClosedArrow":
+ case "Butt":
+ case "ROpenArrow":
+ case "RClosedArrow":
+ case "Slash":
+ this.lineEndings[i] = obj.name;
+ continue;
+ }
+ }
+
+ (0, _util.warn)(`Ignoring invalid lineEnding: ${obj}`);
+ }
+ }
+ }
+
setBorderAndBackgroundColors(mk) {
if (mk instanceof _primitives.Dict) {
this.borderColor = getRgbColor(mk.getArray("BC"), null);
@@ -19022,7 +19112,7 @@ class WidgetAnnotation extends Annotation {
data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
}
- const fieldValue = (0, _core_utils.getInheritableProperty)({
+ let fieldValue = (0, _core_utils.getInheritableProperty)({
dict,
key: "V",
getArray: true
@@ -19035,6 +19125,15 @@ class WidgetAnnotation extends Annotation {
});
data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
+ if (fieldValue === undefined && params.xfaDatasets) {
+ const path = this._title.str;
+
+ if (path) {
+ this._hasValueFromXFA = true;
+ data.fieldValue = fieldValue = params.xfaDatasets.getValue(path);
+ }
+ }
+
if (fieldValue === undefined && data.defaultFieldValue !== null) {
data.fieldValue = data.defaultFieldValue;
}
@@ -19134,14 +19233,18 @@ class WidgetAnnotation extends Annotation {
}
async save(evaluator, task, annotationStorage) {
- if (!annotationStorage) {
- return null;
- }
-
- const storageEntry = annotationStorage.get(this.data.id);
- const value = storageEntry && storageEntry.value;
+ const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined;
+ let value = storageEntry && storageEntry.value;
if (value === this.data.fieldValue || value === undefined) {
+ if (!this._hasValueFromXFA) {
+ return null;
+ }
+
+ value = value || this.data.fieldValue;
+ }
+
+ if (!this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) {
return null;
}
@@ -19178,7 +19281,9 @@ class WidgetAnnotation extends Annotation {
appearance = newTransform.encryptString(appearance);
}
- dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
+ const encoder = val => (0, _util.isAscii)(val) ? val : (0, _util.stringToUTF16BEString)(val);
+
+ dict.set("V", Array.isArray(value) ? value.map(encoder) : encoder(value));
dict.set("AP", AP);
dict.set("M", `D:${(0, _util.getModificationDate)()}`);
const appearanceDict = new _primitives.Dict(xref);
@@ -19206,17 +19311,26 @@ class WidgetAnnotation extends Annotation {
async _getAppearance(evaluator, task, annotationStorage) {
const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);
- if (!annotationStorage || isPassword) {
+ if (isPassword) {
return null;
}
- const storageEntry = annotationStorage.get(this.data.id);
- let value = storageEntry && storageEntry.value;
+ const storageEntry = annotationStorage ? annotationStorage.get(this.data.id) : undefined;
+ let value = storageEntry && (storageEntry.formattedValue || storageEntry.value);
if (value === undefined) {
- return null;
+ if (!this._hasValueFromXFA || this.appearance) {
+ return null;
+ }
+
+ value = this.data.fieldValue;
+
+ if (!value) {
+ return "";
+ }
}
+ (0, _util.assert)(typeof value === "string", "Expected `value` to be a string.");
value = value.trim();
if (value === "") {
@@ -19300,8 +19414,6 @@ class WidgetAnnotation extends Annotation {
if (!fontSize) {
const roundWithTwoDigits = x => Math.floor(x * 100) / 100;
- const LINE_FACTOR = 1.35;
-
if (lineCount === -1) {
const textWidth = this._getTextWidth(text, font);
@@ -19370,12 +19482,13 @@ class WidgetAnnotation extends Annotation {
}
_renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
- const width = this._getTextWidth(text, font) * fontSize;
let shift;
if (alignment === 1) {
+ const width = this._getTextWidth(text, font) * fontSize;
shift = (totalWidth - width) / 2;
} else if (alignment === 2) {
+ const width = this._getTextWidth(text, font) * fontSize;
shift = totalWidth - width - hPadding;
} else {
shift = hPadding;
@@ -19563,7 +19676,7 @@ class TextWidgetAnnotation extends WidgetAnnotation {
return {
id: this.data.id,
value: this.data.fieldValue,
- defaultValue: this.data.defaultFieldValue,
+ defaultValue: this.data.defaultFieldValue || "",
multiline: this.data.multiLine,
password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
charLimit: this.data.maxLen,
@@ -20048,6 +20161,115 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation {
};
}
+ async _getAppearance(evaluator, task, annotationStorage) {
+ if (this.data.combo) {
+ return super._getAppearance(evaluator, task, annotationStorage);
+ }
+
+ if (!annotationStorage) {
+ return null;
+ }
+
+ const storageEntry = annotationStorage.get(this.data.id);
+ let exportedValue = storageEntry && storageEntry.value;
+
+ if (exportedValue === undefined) {
+ return null;
+ }
+
+ if (!Array.isArray(exportedValue)) {
+ exportedValue = [exportedValue];
+ }
+
+ const defaultPadding = 2;
+ const hPadding = defaultPadding;
+ const totalHeight = this.data.rect[3] - this.data.rect[1];
+ const totalWidth = this.data.rect[2] - this.data.rect[0];
+ const lineCount = this.data.options.length;
+ const valueIndices = [];
+
+ for (let i = 0; i < lineCount; i++) {
+ const {
+ exportValue
+ } = this.data.options[i];
+
+ if (exportedValue.includes(exportValue)) {
+ valueIndices.push(i);
+ }
+ }
+
+ if (!this._defaultAppearance) {
+ this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g");
+ }
+
+ const font = await this._getFontData(evaluator, task);
+ let defaultAppearance;
+ let {
+ fontSize
+ } = this.data.defaultAppearanceData;
+
+ if (!fontSize) {
+ const lineHeight = (totalHeight - defaultPadding) / lineCount;
+ let lineWidth = -1;
+ let value;
+
+ for (const {
+ displayValue
+ } of this.data.options) {
+ const width = this._getTextWidth(displayValue);
+
+ if (width > lineWidth) {
+ lineWidth = width;
+ value = displayValue;
+ }
+ }
+
+ [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * hPadding, value, font, -1);
+ } else {
+ defaultAppearance = this._defaultAppearance;
+ }
+
+ const lineHeight = fontSize * LINE_FACTOR;
+ const vPadding = (lineHeight - fontSize) / 2;
+ const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);
+ let firstIndex;
+
+ if (valueIndices.length === 1) {
+ const valuePosition = valueIndices[0];
+ const indexInPage = valuePosition % numberOfVisibleLines;
+ firstIndex = valuePosition - indexInPage;
+ } else {
+ firstIndex = valueIndices.length ? valueIndices[0] : 0;
+ }
+
+ const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);
+ const buf = ["/Tx BMC q", `1 1 ${totalWidth} ${totalHeight} re W n`];
+
+ if (valueIndices.length) {
+ buf.push("0.600006 0.756866 0.854904 rg");
+
+ for (const index of valueIndices) {
+ if (firstIndex <= index && index < end) {
+ buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`);
+ }
+ }
+ }
+
+ buf.push("BT", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);
+
+ for (let i = firstIndex; i < end; i++) {
+ const {
+ displayValue
+ } = this.data.options[i];
+ const hpadding = i === firstIndex ? hPadding : 0;
+ const vpadding = i === firstIndex ? vPadding : 0;
+ buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, hpadding, -lineHeight + vpadding));
+ }
+
+ buf.push("ET Q EMC");
+ return buf.join("\n");
+ }
+
}
class SignatureWidgetAnnotation extends WidgetAnnotation {
@@ -20186,15 +20408,20 @@ class FreeTextAnnotation extends MarkupAnnotation {
class LineAnnotation extends MarkupAnnotation {
constructor(parameters) {
super(parameters);
+ const {
+ dict
+ } = parameters;
this.data.annotationType = _util.AnnotationType.LINE;
- const lineCoordinates = parameters.dict.getArray("L");
+ const lineCoordinates = dict.getArray("L");
this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates);
+ this.setLineEndings(dict.getArray("LE"));
+ this.data.lineEndings = this.lineEndings;
if (!this.appearance) {
const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
- const strokeAlpha = parameters.dict.get("CA");
+ const strokeAlpha = dict.get("CA");
let fillColor = null,
- interiorColor = parameters.dict.getArray("IC");
+ interiorColor = dict.getArray("IC");
if (interiorColor) {
interiorColor = getRgbColor(interiorColor, null);
@@ -20336,9 +20563,18 @@ class CircleAnnotation extends MarkupAnnotation {
class PolylineAnnotation extends MarkupAnnotation {
constructor(parameters) {
super(parameters);
+ const {
+ dict
+ } = parameters;
this.data.annotationType = _util.AnnotationType.POLYLINE;
this.data.vertices = [];
- const rawVertices = parameters.dict.getArray("Vertices");
+
+ if (!(this instanceof PolygonAnnotation)) {
+ this.setLineEndings(dict.getArray("LE"));
+ this.data.lineEndings = this.lineEndings;
+ }
+
+ const rawVertices = dict.getArray("Vertices");
if (!Array.isArray(rawVertices)) {
return;
@@ -20353,7 +20589,7 @@ class PolylineAnnotation extends MarkupAnnotation {
if (!this.appearance) {
const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
- const strokeAlpha = parameters.dict.get("CA");
+ const strokeAlpha = dict.get("CA");
const borderWidth = this.borderStyle.width || 1,
borderAdjust = 2 * borderWidth;
const bbox = [Infinity, Infinity, -Infinity, -Infinity];
@@ -21969,6 +22205,12 @@ function normalizeBlendMode(value, parsingArray = false) {
return "source-over";
}
+function incrementCachedImageMaskCount(data) {
+ if (data.fn === _util.OPS.paintImageMaskXObject && data.args[0] && data.args[0].count > 0) {
+ data.args[0].count++;
+ }
+}
+
class TimeSlotManager {
static get TIME_SLOT_DURATION_MS() {
return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
@@ -22150,9 +22392,10 @@ class PartialEvaluator {
}
}
- processed.forEach(ref => {
+ for (const ref of processed) {
nonBlendModesSet.put(ref);
- });
+ }
+
return false;
}
@@ -22317,7 +22560,7 @@ class PartialEvaluator {
}
_sendImgData(objId, imgData, cacheGlobally = false) {
- const transfers = imgData ? [imgData.data.buffer] : null;
+ const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;
if (this.parsingType3Font || cacheGlobally) {
return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
@@ -22348,8 +22591,14 @@ class PartialEvaluator {
const maxImageSize = this.options.maxImageSize;
if (maxImageSize !== -1 && w * h > maxImageSize) {
- (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
- return;
+ const msg = "Image exceeded maximum allowed size and was removed.";
+
+ if (this.options.ignoreErrors) {
+ (0, _util.warn)(msg);
+ return;
+ }
+
+ throw new Error(msg);
}
let optionalContent;
@@ -22358,18 +22607,39 @@ class PartialEvaluator {
optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
}
- if (optionalContent !== undefined) {
- operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
- }
-
const imageMask = dict.get("IM", "ImageMask") || false;
- const interpolate = dict.get("I", "Interpolate");
let imgData, args;
if (imageMask) {
+ const interpolate = dict.get("I", "Interpolate");
const bitStrideLength = w + 7 >> 3;
- const imgArray = image.getBytes(bitStrideLength * h, true);
+ const imgArray = image.getBytes(bitStrideLength * h);
const decode = dict.getArray("D", "Decode");
+
+ if (this.parsingType3Font) {
+ imgData = _image.PDFImage.createRawMask({
+ imgArray,
+ width: w,
+ height: h,
+ imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream,
+ inverseDecode: !!decode && decode[0] > 0,
+ interpolate
+ });
+ imgData.cached = !!cacheKey;
+ args = [imgData];
+ operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent);
+
+ if (cacheKey) {
+ localImageCache.set(cacheKey, imageRef, {
+ fn: _util.OPS.paintImageMaskXObject,
+ args,
+ optionalContent
+ });
+ }
+
+ return;
+ }
+
imgData = _image.PDFImage.createMask({
imgArray,
width: w,
@@ -22378,21 +22648,43 @@ class PartialEvaluator {
inverseDecode: !!decode && decode[0] > 0,
interpolate
});
- imgData.cached = !!cacheKey;
- args = [imgData];
- operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
+
+ if (imgData.isSingleOpaquePixel) {
+ operatorList.addImageOps(_util.OPS.paintSolidColorImageMask, [], optionalContent);
+
+ if (cacheKey) {
+ localImageCache.set(cacheKey, imageRef, {
+ fn: _util.OPS.paintSolidColorImageMask,
+ args: [],
+ optionalContent
+ });
+ }
+
+ return;
+ }
+
+ const objId = `mask_${this.idFactory.createObjId()}`;
+ operatorList.addDependency(objId);
+
+ this._sendImgData(objId, imgData);
+
+ args = [{
+ data: objId,
+ width: imgData.width,
+ height: imgData.height,
+ interpolate: imgData.interpolate,
+ count: 1
+ }];
+ operatorList.addImageOps(_util.OPS.paintImageMaskXObject, args, optionalContent);
if (cacheKey) {
localImageCache.set(cacheKey, imageRef, {
fn: _util.OPS.paintImageMaskXObject,
- args
+ args,
+ optionalContent
});
}
- if (optionalContent !== undefined) {
- operatorList.addOp(_util.OPS.endMarkedContent, []);
- }
-
return;
}
@@ -22410,12 +22702,7 @@ class PartialEvaluator {
localColorSpaceCache
});
imgData = imageObj.createImageData(true);
- operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
-
- if (optionalContent !== undefined) {
- operatorList.addOp(_util.OPS.endMarkedContent, []);
- }
-
+ operatorList.addImageOps(_util.OPS.paintInlineImageXObject, [imgData], optionalContent);
return;
}
@@ -22455,12 +22742,13 @@ class PartialEvaluator {
return this._sendImgData(objId, null, cacheGlobally);
});
- operatorList.addOp(_util.OPS.paintImageXObject, args);
+ operatorList.addImageOps(_util.OPS.paintImageXObject, args, optionalContent);
if (cacheKey) {
localImageCache.set(cacheKey, imageRef, {
fn: _util.OPS.paintImageXObject,
- args
+ args,
+ optionalContent
});
if (imageRef) {
@@ -22472,15 +22760,12 @@ class PartialEvaluator {
objId,
fn: _util.OPS.paintImageXObject,
args,
+ optionalContent,
byteSize: 0
});
}
}
}
-
- if (optionalContent !== undefined) {
- operatorList.addOp(_util.OPS.endMarkedContent, []);
- }
}
handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
@@ -22941,13 +23226,16 @@ class PartialEvaluator {
args = [];
}
+ let minMax;
+
if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
if (parsingText) {
(0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`);
operatorList.addOp(_util.OPS.save, null);
}
- operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
+ minMax = [Infinity, -Infinity, Infinity, -Infinity];
+ operatorList.addOp(_util.OPS.constructPath, [[fn], args, minMax]);
if (parsingText) {
operatorList.addOp(_util.OPS.restore, null);
@@ -22956,6 +23244,24 @@ class PartialEvaluator {
const opArgs = operatorList.argsArray[lastIndex];
opArgs[0].push(fn);
Array.prototype.push.apply(opArgs[1], args);
+ minMax = opArgs[2];
+ }
+
+ switch (fn) {
+ case _util.OPS.rectangle:
+ minMax[0] = Math.min(minMax[0], args[0], args[0] + args[2]);
+ minMax[1] = Math.max(minMax[1], args[0], args[0] + args[2]);
+ minMax[2] = Math.min(minMax[2], args[1], args[1] + args[3]);
+ minMax[3] = Math.max(minMax[3], args[1], args[1] + args[3]);
+ break;
+
+ case _util.OPS.moveTo:
+ case _util.OPS.lineTo:
+ minMax[0] = Math.min(minMax[0], args[0]);
+ minMax[1] = Math.max(minMax[1], args[0]);
+ minMax[2] = Math.min(minMax[2], args[1]);
+ minMax[3] = Math.max(minMax[3], args[1]);
+ break;
}
}
@@ -23233,7 +23539,8 @@ class PartialEvaluator {
const localImage = localImageCache.getByName(name);
if (localImage) {
- operatorList.addOp(localImage.fn, localImage.args);
+ operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);
+ incrementCachedImageMaskCount(localImage);
args = null;
continue;
}
@@ -23250,7 +23557,8 @@ class PartialEvaluator {
const localImage = localImageCache.getByRef(xobj);
if (localImage) {
- operatorList.addOp(localImage.fn, localImage.args);
+ operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);
+ incrementCachedImageMaskCount(localImage);
resolveXObject();
return;
}
@@ -23259,7 +23567,7 @@ class PartialEvaluator {
if (globalImage) {
operatorList.addDependency(globalImage.objId);
- operatorList.addOp(globalImage.fn, globalImage.args);
+ operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent);
resolveXObject();
return;
}
@@ -23341,7 +23649,8 @@ class PartialEvaluator {
const localImage = localImageCache.getByName(cacheKey);
if (localImage) {
- operatorList.addOp(localImage.fn, localImage.args);
+ operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);
+ incrementCachedImageMaskCount(localImage);
args = null;
continue;
}
@@ -23740,11 +24049,29 @@ class PartialEvaluator {
spaceInFlowMax: 0,
trackingSpaceMin: Infinity,
negativeSpaceMax: -Infinity,
+ notASpace: -Infinity,
transform: null,
fontName: null,
hasEOL: false
};
+ const twoLastChars = [" ", " "];
+ let twoLastCharsPos = 0;
+
+ function saveLastChar(char) {
+ const nextPos = (twoLastCharsPos + 1) % 2;
+ const ret = twoLastChars[twoLastCharsPos] !== " " && twoLastChars[nextPos] === " ";
+ twoLastChars[twoLastCharsPos] = char;
+ twoLastCharsPos = nextPos;
+ return ret;
+ }
+
+ function resetLastChars() {
+ twoLastChars[0] = twoLastChars[1] = " ";
+ twoLastCharsPos = 0;
+ }
+
const TRACKING_SPACE_FACTOR = 0.1;
+ const NOT_A_SPACE_FACTOR = 0.03;
const NEGATIVE_SPACE_FACTOR = -0.2;
const SPACE_IN_FLOW_MIN_FACTOR = 0.1;
const SPACE_IN_FLOW_MAX_FACTOR = 0.6;
@@ -23807,6 +24134,7 @@ class PartialEvaluator {
const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
textContentItem.trackingSpaceMin = textState.fontSize * TRACKING_SPACE_FACTOR;
+ textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR;
textContentItem.negativeSpaceMax = textState.fontSize * NEGATIVE_SPACE_FACTOR;
textContentItem.spaceInFlowMin = textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;
textContentItem.spaceInFlowMax = textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;
@@ -23937,6 +24265,7 @@ class PartialEvaluator {
return true;
}
+ resetLastChars();
flushTextContentItem();
return true;
}
@@ -23946,10 +24275,15 @@ class PartialEvaluator {
return true;
}
+ if (advanceY <= textOrientation * textContentItem.notASpace) {
+ resetLastChars();
+ }
+
if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {
textContentItem.height += advanceY;
} else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {
if (textContentItem.str.length === 0) {
+ resetLastChars();
textContent.items.push({
str: " ",
dir: "ltr",
@@ -23977,6 +24311,7 @@ class PartialEvaluator {
return true;
}
+ resetLastChars();
flushTextContentItem();
return true;
}
@@ -23986,10 +24321,15 @@ class PartialEvaluator {
return true;
}
+ if (advanceX <= textOrientation * textContentItem.notASpace) {
+ resetLastChars();
+ }
+
if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {
textContentItem.width += advanceX;
} else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {
if (textContentItem.str.length === 0) {
+ resetLastChars();
textContent.items.push({
str: " ",
dir: "ltr",
@@ -24046,7 +24386,7 @@ class PartialEvaluator {
let scaledDim = glyphWidth * scale;
- if (glyph.isWhitespace && (i === 0 || i + 1 === ii || glyphs[i - 1].isWhitespace || glyphs[i + 1].isWhitespace || extraSpacing)) {
+ if (glyph.isWhitespace) {
if (!font.vertical) {
charSpacing += scaledDim + textState.wordSpacing;
textState.translateTextMatrix(charSpacing * textState.textHScale, 0);
@@ -24055,6 +24395,7 @@ class PartialEvaluator {
textState.translateTextMatrix(0, -charSpacing);
}
+ saveLastChar(" ");
continue;
}
@@ -24082,15 +24423,16 @@ class PartialEvaluator {
textChunk.prevTransform = getCurrentTextTransform();
}
- if (glyph.isWhitespace) {
+ let glyphUnicode = glyph.unicode;
+ glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
+ glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
+
+ if (saveLastChar(glyphUnicode)) {
textChunk.str.push(" ");
- } else {
- let glyphUnicode = glyph.unicode;
- glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
- glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
- textChunk.str.push(glyphUnicode);
}
+ textChunk.str.push(glyphUnicode);
+
if (charSpacing) {
if (!font.vertical) {
textState.translateTextMatrix(charSpacing * textState.textHScale, 0);
@@ -24102,6 +24444,8 @@ class PartialEvaluator {
}
function appendEOL() {
+ resetLastChars();
+
if (textContentItem.initialized) {
textContentItem.hasEOL = true;
flushTextContentItem();
@@ -24121,6 +24465,7 @@ class PartialEvaluator {
function addFakeSpaces(width, transf, textOrientation) {
if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {
if (textContentItem.initialized) {
+ resetLastChars();
textContentItem.str.push(" ");
}
@@ -24136,6 +24481,7 @@ class PartialEvaluator {
}
flushTextContentItem();
+ resetLastChars();
textContent.items.push({
str: " ",
dir: "ltr",
@@ -24636,7 +24982,13 @@ class PartialEvaluator {
} else if (encoding instanceof _primitives.Name) {
baseEncodingName = encoding.name;
} else {
- throw new _util.FormatError("Encoding is not a Name nor a Dict");
+ const msg = "Encoding is not a Name nor a Dict";
+
+ if (!this.options.ignoreErrors) {
+ throw new _util.FormatError(msg);
+ }
+
+ (0, _util.warn)(msg);
}
if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && baseEncodingName !== "WinAnsiEncoding") {
@@ -28738,7 +29090,7 @@ class DecodeStream extends _base_stream.BaseStream {
return this.buffer[this.pos++];
}
- getBytes(length, forceClamped = false) {
+ getBytes(length) {
const pos = this.pos;
let end;
@@ -28764,8 +29116,7 @@ class DecodeStream extends _base_stream.BaseStream {
}
this.pos = end;
- const subarray = this.buffer.subarray(pos, end);
- return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;
+ return this.buffer.subarray(pos, end);
}
reset() {
@@ -31533,9 +31884,7 @@ class SimpleSegmentVisitor {
const buffer = new Uint8ClampedArray(rowSize * info.height);
if (info.defaultPixelValue) {
- for (let i = 0, ii = buffer.length; i < ii; i++) {
- buffer[i] = 0xff;
- }
+ buffer.fill(0xff);
}
this.buffer = buffer;
@@ -38055,12 +38404,13 @@ class Font {
}
const format = file.getUint16();
- file.skip(2 + 2);
let hasShortCmap = false;
const mappings = [];
let j, glyphId;
if (format === 0) {
+ file.skip(2 + 2);
+
for (j = 0; j < 256; j++) {
const index = file.getByte();
@@ -38076,6 +38426,7 @@ class Font {
hasShortCmap = true;
} else if (format === 2) {
+ file.skip(2 + 2);
const subHeaderKeys = [];
let maxSubHeaderKey = 0;
@@ -38124,6 +38475,7 @@ class Font {
}
}
} else if (format === 4) {
+ file.skip(2 + 2);
const segCount = file.getUint16() >> 1;
file.skip(6);
const segments = [];
@@ -38189,6 +38541,7 @@ class Font {
}
}
} else if (format === 6) {
+ file.skip(2 + 2);
const firstCode = file.getUint16();
const entryCount = file.getUint16();
@@ -38200,6 +38553,22 @@ class Font {
glyphId
});
}
+ } else if (format === 12) {
+ file.skip(2 + 4 + 4);
+ const nGroups = file.getInt32() >>> 0;
+
+ for (j = 0; j < nGroups; j++) {
+ const startCharCode = file.getInt32() >>> 0;
+ const endCharCode = file.getInt32() >>> 0;
+ let glyphCode = file.getInt32() >>> 0;
+
+ for (let charCode = startCharCode; charCode <= endCharCode; charCode++) {
+ mappings.push({
+ charCode,
+ glyphId: glyphCode++
+ });
+ }
+ }
} else {
(0, _util.warn)("cmap table has unsupported format: " + format);
return {
@@ -38488,6 +38857,27 @@ class Font {
locaEntries.sort((a, b) => {
return a.index - b.index;
});
+
+ for (i = 0; i < numGlyphs; i++) {
+ const {
+ offset,
+ endOffset
+ } = locaEntries[i];
+
+ if (offset !== 0 || endOffset !== 0) {
+ break;
+ }
+
+ const nextOffset = locaEntries[i + 1].offset;
+
+ if (nextOffset === 0) {
+ continue;
+ }
+
+ locaEntries[i].endOffset = nextOffset;
+ break;
+ }
+
const missingGlyphs = Object.create(null);
let writeOffset = 0;
itemEncode(locaData, 0, writeOffset);
@@ -49988,7 +50378,7 @@ class PDFFunction {
const parser = new _ps_parser.PostScriptParser(lexer);
const code = parser.parse();
- if (isEvalSupported && _util.IsEvalSupportedCached.value) {
+ if (isEvalSupported && _util.FeatureTest.isEvalSupported) {
const compiled = new PostScriptCompiler().compile(code, domain, range);
if (compiled) {
@@ -51309,9 +51699,9 @@ class GlobalImageCache {
get _byteSize() {
let byteSize = 0;
- this._imageCache.forEach(imageData => {
+ for (const imageData of this._imageCache) {
byteSize += imageData.byteSize;
- });
+ }
return byteSize;
}
@@ -51884,25 +52274,6 @@ function addState(parentState, pattern, checkFn, iterateFn, processFn) {
};
}
-function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
- const iFirstPIMXO = iFirstSave + 2;
- let i;
-
- for (i = 0; i < count; i++) {
- const arg = argsArray[iFirstPIMXO + 4 * i];
- const imageMask = arg.length === 1 && arg[0];
-
- if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {
- fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
- continue;
- }
-
- break;
- }
-
- return count - i;
-}
-
const InitialState = [];
addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
const fnArray = context.fnArray;
@@ -51971,7 +52342,7 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInli
const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
- const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
+ const imgData = new Uint8Array(imgWidth * imgHeight * 4);
const imgRowSize = imgWidth << 2;
for (let q = 0; q < count; q++) {
@@ -52042,7 +52413,6 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImag
const iFirstTransform = curr - 2;
const iFirstPIMXO = curr - 1;
let count = Math.floor((i - iFirstSave) / 4);
- count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
return i - (i - iFirstSave) % 4;
@@ -52100,6 +52470,8 @@ addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImag
data: maskParams.data,
width: maskParams.width,
height: maskParams.height,
+ interpolate: maskParams.interpolate,
+ count: maskParams.count,
transform: transformArgs
});
}
@@ -52423,6 +52795,18 @@ class OperatorList {
}
}
+ addImageOps(fn, args, optionalContent) {
+ if (optionalContent !== undefined) {
+ this.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+ }
+
+ this.addOp(fn, args);
+
+ if (optionalContent !== undefined) {
+ this.addOp(_util.OPS.endMarkedContent, []);
+ }
+ }
+
addDependency(dependency) {
if (this.dependencies.has(dependency)) {
return;
@@ -52475,9 +52859,8 @@ class OperatorList {
case _util.OPS.paintInlineImageXObjectGroup:
case _util.OPS.paintImageMaskXObject:
const arg = argsArray[i][0];
- ;
- if (!arg.cached) {
+ if (!arg.cached && arg.data && arg.data.buffer instanceof ArrayBuffer) {
transfers.push(arg.data.buffer);
}
@@ -52524,6 +52907,8 @@ exports.PDFImage = void 0;
var _util = __w_pdfjs_require__(2);
+var _image_utils = __w_pdfjs_require__(64);
+
var _base_stream = __w_pdfjs_require__(9);
var _colorspace = __w_pdfjs_require__(24);
@@ -52755,12 +53140,16 @@ class PDFImage {
const mask = image.dict.get("Mask");
if (smask) {
- smaskData = smask;
+ if (smask instanceof _base_stream.BaseStream) {
+ smaskData = smask;
+ } else {
+ (0, _util.warn)("Unsupported /SMask format.");
+ }
} else if (mask) {
if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) {
maskData = mask;
} else {
- (0, _util.warn)("Unsupported mask format.");
+ (0, _util.warn)("Unsupported /Mask format.");
}
}
@@ -52776,7 +53165,7 @@ class PDFImage {
});
}
- static createMask({
+ static createRawMask({
imgArray,
width,
height,
@@ -52792,15 +53181,11 @@ class PDFImage {
if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
data = imgArray;
} else if (!inverseDecode) {
- data = new Uint8ClampedArray(actualLength);
- data.set(imgArray);
+ data = new Uint8Array(imgArray);
} else {
- data = new Uint8ClampedArray(computedLength);
+ data = new Uint8Array(computedLength);
data.set(imgArray);
-
- for (i = actualLength; i < computedLength; i++) {
- data[i] = 0xff;
- }
+ data.fill(0xff, actualLength);
}
if (inverseDecode) {
@@ -52817,6 +53202,54 @@ class PDFImage {
};
}
+ static createMask({
+ imgArray,
+ width,
+ height,
+ imageIsFromDecodeStream,
+ inverseDecode,
+ interpolate
+ }) {
+ const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));
+
+ if (isSingleOpaquePixel) {
+ return {
+ isSingleOpaquePixel
+ };
+ }
+
+ if (_util.FeatureTest.isOffscreenCanvasSupported) {
+ const canvas = new OffscreenCanvas(width, height);
+ const ctx = canvas.getContext("2d");
+ const imgData = ctx.createImageData(width, height);
+ (0, _image_utils.applyMaskImageData)({
+ src: imgArray,
+ dest: imgData.data,
+ width,
+ height,
+ inverseDecode
+ });
+ ctx.putImageData(imgData, 0, 0);
+ const bitmap = canvas.transferToImageBitmap();
+ return {
+ data: null,
+ width,
+ height,
+ interpolate,
+ bitmap
+ };
+ }
+
+ return this.createRawMask({
+ imgArray,
+ width,
+ height,
+ inverseDecode,
+ imageIsFromDecodeStream,
+ interpolate
+ });
+ }
+
get drawWidth() {
return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
}
@@ -53052,7 +53485,6 @@ class PDFImage {
const originalHeight = this.height;
const bpc = this.bpc;
const rowBytes = originalWidth * numComps * bpc + 7 >> 3;
- let imgArray;
if (!forceRGBA) {
let kind;
@@ -53065,15 +53497,7 @@ class PDFImage {
if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
imgData.kind = kind;
- imgArray = this.getImageBytes(originalHeight * rowBytes);
-
- if (this.image instanceof _decode_stream.DecodeStream) {
- imgData.data = imgArray;
- } else {
- const newArray = new Uint8ClampedArray(imgArray.length);
- newArray.set(imgArray);
- imgData.data = newArray;
- }
+ imgData.data = this.getImageBytes(originalHeight * rowBytes, {});
if (this.needsDecode) {
(0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale.");
@@ -53097,13 +53521,19 @@ class PDFImage {
case "DeviceRGB":
case "DeviceCMYK":
imgData.kind = _util.ImageKind.RGB_24BPP;
- imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
+ imgData.data = this.getImageBytes(imageLength, {
+ drawWidth,
+ drawHeight,
+ forceRGB: true
+ });
return imgData;
}
}
}
- imgArray = this.getImageBytes(originalHeight * rowBytes);
+ const imgArray = this.getImageBytes(originalHeight * rowBytes, {
+ internal: true
+ });
const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
const comps = this.getComponents(imgArray);
let alpha01, maybeUndoPreblend;
@@ -53145,7 +53575,9 @@ class PDFImage {
const height = this.height;
const bpc = this.bpc;
const rowBytes = width * numComps * bpc + 7 >> 3;
- const imgArray = this.getImageBytes(height * rowBytes);
+ const imgArray = this.getImageBytes(height * rowBytes, {
+ internal: true
+ });
const comps = this.getComponents(imgArray);
let i, length;
@@ -53177,12 +53609,24 @@ class PDFImage {
}
}
- getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
+ getImageBytes(length, {
+ drawWidth,
+ drawHeight,
+ forceRGB = false,
+ internal = false
+ }) {
this.image.reset();
this.image.drawWidth = drawWidth || this.width;
this.image.drawHeight = drawHeight || this.height;
this.image.forceRGB = !!forceRGB;
- return this.image.getBytes(length, true);
+ const imageBytes = this.image.getBytes(length);
+
+ if (internal || this.image instanceof _decode_stream.DecodeStream) {
+ return imageBytes;
+ }
+
+ (0, _util.assert)(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported "imageBytes" type.');
+ return new Uint8Array(imageBytes);
}
}
@@ -53198,6 +53642,65 @@ exports.PDFImage = PDFImage;
Object.defineProperty(exports, "__esModule", ({
value: true
}));
+exports.applyMaskImageData = applyMaskImageData;
+
+var _util = __w_pdfjs_require__(2);
+
+function applyMaskImageData({
+ src,
+ srcPos = 0,
+ dest,
+ destPos = 0,
+ width,
+ height,
+ inverseDecode = false
+}) {
+ const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
+ const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];
+ const widthInSource = width >> 3;
+ const widthRemainder = width & 7;
+ const srcLength = src.length;
+ dest = new Uint32Array(dest.buffer);
+
+ for (let i = 0; i < height; i++) {
+ for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {
+ const elem = srcPos < srcLength ? src[srcPos] : 255;
+ dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;
+ }
+
+ if (widthRemainder === 0) {
+ continue;
+ }
+
+ const elem = srcPos < srcLength ? src[srcPos++] : 255;
+
+ for (let j = 0; j < widthRemainder; j++) {
+ dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;
+ }
+ }
+
+ return {
+ srcPos,
+ destPos
+ };
+}
+
+/***/ }),
+/* 65 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
exports.Catalog = void 0;
var _core_utils = __w_pdfjs_require__(8);
@@ -53206,21 +53709,21 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _name_number_tree = __w_pdfjs_require__(65);
+var _name_number_tree = __w_pdfjs_require__(66);
var _base_stream = __w_pdfjs_require__(9);
-var _cleanup_helper = __w_pdfjs_require__(66);
+var _cleanup_helper = __w_pdfjs_require__(67);
var _colorspace = __w_pdfjs_require__(24);
-var _file_spec = __w_pdfjs_require__(67);
+var _file_spec = __w_pdfjs_require__(68);
var _image_utils = __w_pdfjs_require__(59);
-var _metadata_parser = __w_pdfjs_require__(68);
+var _metadata_parser = __w_pdfjs_require__(69);
-var _struct_tree = __w_pdfjs_require__(70);
+var _struct_tree = __w_pdfjs_require__(71);
function fetchDestination(dest) {
if (dest instanceof _primitives.Dict) {
@@ -53374,24 +53877,18 @@ class Catalog {
return null;
}
- const markInfo = Object.assign(Object.create(null), {
+ const markInfo = {
Marked: false,
UserProperties: false,
Suspects: false
- });
+ };
for (const key in markInfo) {
- if (!obj.has(key)) {
- continue;
- }
-
const value = obj.get(key);
- if (typeof value !== "boolean") {
- continue;
+ if (typeof value === "boolean") {
+ markInfo[key] = value;
}
-
- markInfo[key] = value;
}
return markInfo;
@@ -53778,7 +54275,7 @@ class Catalog {
const dest = fetchDestination(value);
if (dest) {
- dests[key] = dest;
+ dests[(0, _util.stringToPDFString)(key)] = dest;
}
}
} else if (obj instanceof _primitives.Dict) {
@@ -53931,13 +54428,7 @@ class Catalog {
const baseCharCode = style === "a" ? A_LOWER_CASE : A_UPPER_CASE;
const letterIndex = currentIndex - 1;
const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);
- const charBuf = [];
-
- for (let j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {
- charBuf.push(character);
- }
-
- currentLabel = charBuf.join("");
+ currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);
break;
default:
@@ -54211,7 +54702,7 @@ class Catalog {
xfaImages = new _primitives.Dict(this.xref);
}
- xfaImages.set(key, value);
+ xfaImages.set((0, _util.stringToPDFString)(key), value);
}
}
@@ -54251,7 +54742,7 @@ class Catalog {
const nameTree = new _name_number_tree.NameTree(obj.getRaw("JavaScript"), this.xref);
for (const [key, value] of nameTree.getAll()) {
- appendIfJavaScriptDict(key, value);
+ appendIfJavaScriptDict((0, _util.stringToPDFString)(key), value);
}
}
@@ -54292,42 +54783,34 @@ class Catalog {
return (0, _util.shadow)(this, "jsActions", actions);
}
- fontFallback(id, handler) {
- const promises = [];
- this.fontCache.forEach(function (promise) {
- promises.push(promise);
- });
- return Promise.all(promises).then(translatedFonts => {
- for (const translatedFont of translatedFonts) {
- if (translatedFont.loadedName === id) {
- translatedFont.fallback(handler);
- return;
- }
+ async fontFallback(id, handler) {
+ const translatedFonts = await Promise.all(this.fontCache);
+
+ for (const translatedFont of translatedFonts) {
+ if (translatedFont.loadedName === id) {
+ translatedFont.fallback(handler);
+ return;
}
- });
+ }
}
- cleanup(manuallyTriggered = false) {
+ async cleanup(manuallyTriggered = false) {
(0, _cleanup_helper.clearGlobalCaches)();
this.globalImageCache.clear(manuallyTriggered);
this.pageKidsCountCache.clear();
this.pageIndexCache.clear();
this.nonBlendModesSet.clear();
- const promises = [];
- this.fontCache.forEach(function (promise) {
- promises.push(promise);
- });
- return Promise.all(promises).then(translatedFonts => {
- for (const {
- dict
- } of translatedFonts) {
- delete dict.cacheKey;
- }
+ const translatedFonts = await Promise.all(this.fontCache);
- this.fontCache.clear();
- this.builtInCMapCache.clear();
- this.standardFontDataCache.clear();
- });
+ for (const {
+ dict
+ } of translatedFonts) {
+ delete dict.cacheKey;
+ }
+
+ this.fontCache.clear();
+ this.builtInCMapCache.clear();
+ this.standardFontDataCache.clear();
}
async getPageDict(pageIndex) {
@@ -54658,6 +55141,26 @@ class Catalog {
return next(pageRef);
}
+ get baseUrl() {
+ const uri = this._catDict.get("URI");
+
+ if (uri instanceof _primitives.Dict) {
+ const base = uri.get("Base");
+
+ if (typeof base === "string") {
+ const absoluteUrl = (0, _util.createValidAbsoluteUrl)(base, null, {
+ tryConvertEncoding: true
+ });
+
+ if (absoluteUrl) {
+ return (0, _util.shadow)(this, "baseUrl", absoluteUrl.href);
+ }
+ }
+ }
+
+ return (0, _util.shadow)(this, "baseUrl", null);
+ }
+
static parseDestDictionary(params) {
const destDict = params.destDict;
@@ -54832,7 +55335,9 @@ class Catalog {
dest = dest.name;
}
- if (typeof dest === "string" || Array.isArray(dest)) {
+ if (typeof dest === "string") {
+ resultObj.dest = (0, _util.stringToPDFString)(dest);
+ } else if (Array.isArray(dest)) {
resultObj.dest = dest;
}
}
@@ -54843,7 +55348,7 @@ class Catalog {
exports.Catalog = Catalog;
/***/ }),
-/* 65 */
+/* 66 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -54890,9 +55395,11 @@ class NameOrNumberTree {
if (obj.has("Kids")) {
const kids = obj.get("Kids");
- for (let i = 0, ii = kids.length; i < ii; i++) {
- const kid = kids[i];
+ if (!Array.isArray(kids)) {
+ continue;
+ }
+ for (const kid of kids) {
if (processed.has(kid)) {
throw new _util.FormatError(`Duplicate entry in "${this._type}" tree.`);
}
@@ -54953,7 +55460,7 @@ class NameOrNumberTree {
} else if (key > xref.fetchIfRef(limits[1])) {
l = m + 1;
} else {
- kidsOrEntries = xref.fetchIfRef(kids[m]);
+ kidsOrEntries = kid;
break;
}
}
@@ -55008,7 +55515,7 @@ class NumberTree extends NameOrNumberTree {
exports.NumberTree = NumberTree;
/***/ }),
-/* 66 */
+/* 67 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55028,7 +55535,7 @@ function clearGlobalCaches() {
}
/***/ }),
-/* 67 */
+/* 68 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55134,7 +55641,7 @@ class FileSpec {
exports.FileSpec = FileSpec;
/***/ }),
-/* 68 */
+/* 69 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55144,7 +55651,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.MetadataParser = void 0;
-var _xml_parser = __w_pdfjs_require__(69);
+var _xml_parser = __w_pdfjs_require__(70);
class MetadataParser {
constructor(data) {
@@ -55273,7 +55780,7 @@ class MetadataParser {
exports.MetadataParser = MetadataParser;
/***/ }),
-/* 69 */
+/* 70 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55627,6 +56134,10 @@ class SimpleDOMNode {
}).join("");
}
+ get children() {
+ return this.childNodes || [];
+ }
+
hasChildNodes() {
return this.childNodes && this.childNodes.length > 0;
}
@@ -55803,12 +56314,14 @@ class SimpleXMLParser extends XMLParserBase {
const lastElement = this._currentFragment[this._currentFragment.length - 1];
if (!lastElement) {
- return;
+ return null;
}
for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
lastElement.childNodes[i].parentNode = lastElement;
}
+
+ return lastElement;
}
onError(code) {
@@ -55820,7 +56333,7 @@ class SimpleXMLParser extends XMLParserBase {
exports.SimpleXMLParser = SimpleXMLParser;
/***/ }),
-/* 70 */
+/* 71 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -55834,7 +56347,7 @@ var _primitives = __w_pdfjs_require__(5);
var _util = __w_pdfjs_require__(2);
-var _name_number_tree = __w_pdfjs_require__(65);
+var _name_number_tree = __w_pdfjs_require__(66);
const MAX_DEPTH = 40;
const StructElementType = {
@@ -56189,7 +56702,7 @@ class StructTreePage {
exports.StructTreePage = StructTreePage;
/***/ }),
-/* 71 */
+/* 72 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -56339,7 +56852,7 @@ class ObjectLoader {
exports.ObjectLoader = ObjectLoader;
/***/ }),
-/* 72 */
+/* 73 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -56356,11 +56869,11 @@ var _primitives = __w_pdfjs_require__(5);
var _core_utils = __w_pdfjs_require__(8);
-var _xml_parser = __w_pdfjs_require__(69);
+var _xml_parser = __w_pdfjs_require__(70);
var _base_stream = __w_pdfjs_require__(9);
-var _crypto = __w_pdfjs_require__(73);
+var _crypto = __w_pdfjs_require__(74);
function writeDict(dict, buffer, transform) {
buffer.push("<<");
@@ -56509,7 +57022,11 @@ function writeXFADataForAcroform(str, newRefs) {
const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0);
if (node) {
- node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)];
+ if (Array.isArray(value)) {
+ node.childNodes = value.map(val => new _xml_parser.SimpleDOMNode("value", val));
+ } else {
+ node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)];
+ }
} else {
(0, _util.warn)(`Node not found for path: ${path}`);
}
@@ -56695,7 +57212,7 @@ function incrementalUpdate({
}
/***/ }),
-/* 73 */
+/* 74 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -56711,7 +57228,7 @@ var _util = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(5);
-var _decrypt_stream = __w_pdfjs_require__(74);
+var _decrypt_stream = __w_pdfjs_require__(75);
class ARCFourCipher {
constructor(key) {
@@ -58286,7 +58803,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
exports.CipherTransformFactory = CipherTransformFactory;
/***/ }),
-/* 74 */
+/* 75 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58345,7 +58862,7 @@ class DecryptStream extends _decode_stream.DecodeStream {
exports.DecryptStream = DecryptStream;
/***/ }),
-/* 75 */
+/* 76 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58355,21 +58872,21 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XFAFactory = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _bind = __w_pdfjs_require__(80);
+var _bind = __w_pdfjs_require__(81);
-var _data = __w_pdfjs_require__(86);
+var _data = __w_pdfjs_require__(87);
-var _fonts = __w_pdfjs_require__(84);
+var _fonts = __w_pdfjs_require__(85);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
-var _parser = __w_pdfjs_require__(87);
+var _parser = __w_pdfjs_require__(88);
-var _xhtml = __w_pdfjs_require__(97);
+var _xhtml = __w_pdfjs_require__(98);
class XFAFactory {
constructor(data) {
@@ -58541,7 +59058,7 @@ class XFAFactory {
exports.XFAFactory = XFAFactory;
/***/ }),
-/* 76 */
+/* 77 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -58551,15 +59068,15 @@ Object.defineProperty(exports, "__esModule", ({
}));
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.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = 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.$getSubformParent = 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__(77);
+var _utils = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
var _core_utils = __w_pdfjs_require__(8);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _som = __w_pdfjs_require__(79);
+var _som = __w_pdfjs_require__(80);
const $acceptWhitespace = Symbol();
exports.$acceptWhitespace = $acceptWhitespace;
@@ -59739,7 +60256,7 @@ class Option10 extends IntegerObject {
exports.Option10 = Option10;
/***/ }),
-/* 77 */
+/* 78 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -60010,7 +60527,7 @@ class HTMLResult {
exports.HTMLResult = HTMLResult;
/***/ }),
-/* 78 */
+/* 79 */
/***/ ((__unused_webpack_module, exports) => {
@@ -60086,7 +60603,7 @@ const NamespaceIds = {
exports.NamespaceIds = NamespaceIds;
/***/ }),
-/* 79 */
+/* 80 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -60097,9 +60614,9 @@ Object.defineProperty(exports, "__esModule", ({
exports.createDataNode = createDataNode;
exports.searchNode = searchNode;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
var _util = __w_pdfjs_require__(2);
@@ -60434,7 +60951,7 @@ function createDataNode(root, container, expr) {
}
/***/ }),
-/* 80 */
+/* 81 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -60444,13 +60961,13 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Binder = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _template = __w_pdfjs_require__(81);
+var _template = __w_pdfjs_require__(82);
-var _som = __w_pdfjs_require__(79);
+var _som = __w_pdfjs_require__(80);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
var _util = __w_pdfjs_require__(2);
@@ -61033,7 +61550,7 @@ class Binder {
exports.Binder = Binder;
/***/ }),
-/* 81 */
+/* 82 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -61043,23 +61560,23 @@ 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__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _layout = __w_pdfjs_require__(82);
+var _layout = __w_pdfjs_require__(83);
-var _html_utils = __w_pdfjs_require__(83);
+var _html_utils = __w_pdfjs_require__(84);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
-var _fonts = __w_pdfjs_require__(84);
+var _fonts = __w_pdfjs_require__(85);
var _core_utils = __w_pdfjs_require__(8);
-var _som = __w_pdfjs_require__(79);
+var _som = __w_pdfjs_require__(80);
const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;
const SVG_NS = "http://www.w3.org/2000/svg";
@@ -66955,7 +67472,7 @@ class TemplateNamespace {
exports.TemplateNamespace = TemplateNamespace;
/***/ }),
-/* 82 */
+/* 83 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -66968,9 +67485,9 @@ exports.checkDimensions = checkDimensions;
exports.flushHTML = flushHTML;
exports.getAvailableSpace = getAvailableSpace;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _html_utils = __w_pdfjs_require__(83);
+var _html_utils = __w_pdfjs_require__(84);
function createLine(node, children) {
return {
@@ -67307,7 +67824,7 @@ function checkDimensions(node, space) {
}
/***/ }),
-/* 83 */
+/* 84 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -67330,15 +67847,15 @@ exports.setMinMaxDimensions = setMinMaxDimensions;
exports.setPara = setPara;
exports.toStyle = toStyle;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
var _util = __w_pdfjs_require__(2);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
-var _fonts = __w_pdfjs_require__(84);
+var _fonts = __w_pdfjs_require__(85);
-var _text = __w_pdfjs_require__(85);
+var _text = __w_pdfjs_require__(86);
function measureToString(m) {
if (typeof m === "string") {
@@ -67991,7 +68508,7 @@ function fixURL(str) {
}
/***/ }),
-/* 84 */
+/* 85 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68003,9 +68520,9 @@ exports.FontFinder = void 0;
exports.getMetrics = getMetrics;
exports.selectFont = selectFont;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
@@ -68200,7 +68717,7 @@ function getMetrics(xfaFont, real = false) {
}
/***/ }),
-/* 85 */
+/* 86 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68210,7 +68727,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.TextMeasure = void 0;
-var _fonts = __w_pdfjs_require__(84);
+var _fonts = __w_pdfjs_require__(85);
const WIDTH_FACTOR = 1.02;
@@ -68468,7 +68985,7 @@ class TextMeasure {
exports.TextMeasure = TextMeasure;
/***/ }),
-/* 86 */
+/* 87 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68478,7 +68995,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.DataHandler = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
class DataHandler {
constructor(root, data) {
@@ -68545,7 +69062,7 @@ class DataHandler {
exports.DataHandler = DataHandler;
/***/ }),
-/* 87 */
+/* 88 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68555,11 +69072,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XFAParser = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _xml_parser = __w_pdfjs_require__(69);
+var _xml_parser = __w_pdfjs_require__(70);
-var _builder = __w_pdfjs_require__(88);
+var _builder = __w_pdfjs_require__(89);
var _util = __w_pdfjs_require__(2);
@@ -68738,7 +69255,7 @@ class XFAParser extends _xml_parser.XMLParserBase {
exports.XFAParser = XFAParser;
/***/ }),
-/* 88 */
+/* 89 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68748,15 +69265,15 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.Builder = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _setup = __w_pdfjs_require__(89);
+var _setup = __w_pdfjs_require__(90);
-var _template = __w_pdfjs_require__(81);
+var _template = __w_pdfjs_require__(82);
-var _unknown = __w_pdfjs_require__(98);
+var _unknown = __w_pdfjs_require__(99);
var _util = __w_pdfjs_require__(2);
@@ -68971,7 +69488,7 @@ class Builder {
exports.Builder = Builder;
/***/ }),
-/* 89 */
+/* 90 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -68981,23 +69498,23 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.NamespaceSetUp = void 0;
-var _config = __w_pdfjs_require__(90);
+var _config = __w_pdfjs_require__(91);
-var _connection_set = __w_pdfjs_require__(91);
+var _connection_set = __w_pdfjs_require__(92);
-var _datasets = __w_pdfjs_require__(92);
+var _datasets = __w_pdfjs_require__(93);
-var _locale_set = __w_pdfjs_require__(93);
+var _locale_set = __w_pdfjs_require__(94);
-var _signature = __w_pdfjs_require__(94);
+var _signature = __w_pdfjs_require__(95);
-var _stylesheet = __w_pdfjs_require__(95);
+var _stylesheet = __w_pdfjs_require__(96);
-var _template = __w_pdfjs_require__(81);
+var _template = __w_pdfjs_require__(82);
-var _xdp = __w_pdfjs_require__(96);
+var _xdp = __w_pdfjs_require__(97);
-var _xhtml = __w_pdfjs_require__(97);
+var _xhtml = __w_pdfjs_require__(98);
const NamespaceSetUp = {
config: _config.ConfigNamespace,
@@ -69013,7 +69530,7 @@ const NamespaceSetUp = {
exports.NamespaceSetUp = NamespaceSetUp;
/***/ }),
-/* 90 */
+/* 91 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -69023,11 +69540,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.ConfigNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
var _util = __w_pdfjs_require__(2);
@@ -70902,7 +71419,7 @@ class ConfigNamespace {
exports.ConfigNamespace = ConfigNamespace;
/***/ }),
-/* 91 */
+/* 92 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -70912,9 +71429,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.ConnectionSetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id;
@@ -71116,7 +71633,7 @@ class ConnectionSetNamespace {
exports.ConnectionSetNamespace = ConnectionSetNamespace;
/***/ }),
-/* 92 */
+/* 93 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71126,9 +71643,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.DatasetsNamespace = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id;
@@ -71184,7 +71701,7 @@ class DatasetsNamespace {
exports.DatasetsNamespace = DatasetsNamespace;
/***/ }),
-/* 93 */
+/* 94 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71194,11 +71711,11 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.LocaleSetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id;
@@ -71522,7 +72039,7 @@ class LocaleSetNamespace {
exports.LocaleSetNamespace = LocaleSetNamespace;
/***/ }),
-/* 94 */
+/* 95 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71532,9 +72049,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.SignatureNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id;
@@ -71563,7 +72080,7 @@ class SignatureNamespace {
exports.SignatureNamespace = SignatureNamespace;
/***/ }),
-/* 95 */
+/* 96 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71573,9 +72090,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.StylesheetNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id;
@@ -71604,7 +72121,7 @@ class StylesheetNamespace {
exports.StylesheetNamespace = StylesheetNamespace;
/***/ }),
-/* 96 */
+/* 97 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71614,9 +72131,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XdpNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id;
@@ -71658,7 +72175,7 @@ class XdpNamespace {
exports.XdpNamespace = XdpNamespace;
/***/ }),
-/* 97 */
+/* 98 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -71668,13 +72185,13 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.XhtmlNamespace = void 0;
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _html_utils = __w_pdfjs_require__(83);
+var _html_utils = __w_pdfjs_require__(84);
-var _utils = __w_pdfjs_require__(77);
+var _utils = __w_pdfjs_require__(78);
const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id;
const $richText = Symbol();
@@ -72193,7 +72710,7 @@ class XhtmlNamespace {
exports.XhtmlNamespace = XhtmlNamespace;
/***/ }),
-/* 98 */
+/* 99 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -72203,9 +72720,9 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.UnknownNamespace = void 0;
-var _namespaces = __w_pdfjs_require__(78);
+var _namespaces = __w_pdfjs_require__(79);
-var _xfa_object = __w_pdfjs_require__(76);
+var _xfa_object = __w_pdfjs_require__(77);
class UnknownNamespace {
constructor(nsId) {
@@ -72221,7 +72738,93 @@ class UnknownNamespace {
exports.UnknownNamespace = UnknownNamespace;
/***/ }),
-/* 99 */
+/* 100 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.DatasetReader = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _core_utils = __w_pdfjs_require__(8);
+
+var _xml_parser = __w_pdfjs_require__(70);
+
+function decodeString(str) {
+ try {
+ return (0, _util.stringToUTF8String)(str);
+ } catch (ex) {
+ (0, _util.warn)(`UTF-8 decoding failed: "${ex}".`);
+ return str;
+ }
+}
+
+class DatasetXMLParser extends _xml_parser.SimpleXMLParser {
+ constructor(options) {
+ super(options);
+ this.node = null;
+ }
+
+ onEndElement(name) {
+ const node = super.onEndElement(name);
+
+ if (node && name === "xfa:datasets") {
+ this.node = node;
+ throw new Error("Aborting DatasetXMLParser.");
+ }
+ }
+
+}
+
+class DatasetReader {
+ constructor(data) {
+ if (data.datasets) {
+ this.node = new _xml_parser.SimpleXMLParser({
+ hasAttributes: true
+ }).parseFromString(data.datasets).documentElement;
+ } else {
+ const parser = new DatasetXMLParser({
+ hasAttributes: true
+ });
+
+ try {
+ parser.parseFromString(data["xdp:xdp"]);
+ } catch (_) {}
+
+ this.node = parser.node;
+ }
+ }
+
+ getValue(path) {
+ if (!this.node || !path) {
+ return "";
+ }
+
+ const node = this.node.searchNode((0, _core_utils.parseXFAPath)(path), 0);
+
+ if (!node) {
+ return "";
+ }
+
+ const first = node.firstChild;
+
+ if (first && first.nodeName === "value") {
+ return node.children.map(child => decodeString(child.textContent));
+ }
+
+ return decodeString(node.textContent);
+ }
+
+}
+
+exports.DatasetReader = DatasetReader;
+
+/***/ }),
+/* 101 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -72241,7 +72844,7 @@ var _parser = __w_pdfjs_require__(27);
var _base_stream = __w_pdfjs_require__(9);
-var _crypto = __w_pdfjs_require__(73);
+var _crypto = __w_pdfjs_require__(74);
class XRef {
constructor(stream, pdfManager) {
@@ -73107,7 +73710,7 @@ class XRef {
exports.XRef = XRef;
/***/ }),
-/* 100 */
+/* 102 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -73593,7 +74196,7 @@ class MessageHandler {
exports.MessageHandler = MessageHandler;
/***/ }),
-/* 101 */
+/* 103 */
/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -73817,8 +74420,8 @@ Object.defineProperty(exports, "WorkerMessageHandler", ({
var _worker = __w_pdfjs_require__(1);
-const pdfjsVersion = '2.13.216';
-const pdfjsBuild = '399a0ec60';
+const pdfjsVersion = '2.14.305';
+const pdfjsBuild = 'eaaa8b4ad';
})();
/******/ return __webpack_exports__;
diff --git a/js/pdfjs/build/pdf.worker.js.map b/js/pdfjs/build/pdf.worker.js.map
index 3d78757..bb00ae0 100644
--- a/js/pdfjs/build/pdf.worker.js.map
+++ b/js/pdfjs/build/pdf.worker.js.map
@@ -1 +1 @@
-{"version":3,"file":"pdf.worker.js","mappings":"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ARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,EAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,EAAF,IAAQ,GAARA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,IAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,GAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,GAAF,IAAS,KAATA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,KAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,IAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,IAAF,IAAU,GAAVA;AACAA,IAAE,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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(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.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n UNSUPPORTED_FEATURES,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker,\n // and that `postMessage` transfers are supported.\n handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n });\n\n handler.on(\"configure\", function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const apiVersion = docParams.apiVersion;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (typeof ReadableStream === \"undefined\") {\n const partialMsg =\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n if (isNodeJS) {\n throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n }\n throw new Error(partialMsg + \"please update to a supported browser.\");\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be sucessfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n const disableAutoFetch =\n source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n for (const ref of refs) {\n newRefs = ref\n .filter(x => x !== null)\n .reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n // eslint-disable-next-line no-restricted-syntax\n return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n forEach(callback) {\n for (const ref of this._set.values()) {\n callback(ref);\n }\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n forEach(callback) {\n for (const value of this._map.values()) {\n callback(value);\n }\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n return this._docBaseUrl;\n }\n\n onLoadedStream() {\n unreachable(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code = code && stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"&lt;\",\n /* > */ 0x3e: \"&gt;\",\n /* & */ 0x26: \"&amp;\",\n /* \" */ 0x22: \"&quot;\",\n /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length, forceClamped = false) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length, forceClamped = false) {\n const bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n const subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n const subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n return shadow(\n this,\n \"resources\",\n this._getInheritableProperty(\"Resources\") || Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\n const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n warn(`Empty /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (typeof obj !== \"number\" || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n let view;\n if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n return shadow(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n function ([pageOpList, annotations]) {\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n });\n }\n );\n }\n\n extractTextContent({\n handler,\n task,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n combineTextItems,\n sink,\n viewBox: this.view,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, arg) {\n let stream;\n if (arg instanceof BaseStream) {\n stream = arg;\n } else if (isArrayBuffer(arg)) {\n stream = new Stream(arg);\n } else {\n throw new Error(\"PDFDocument: Unknown argument type\");\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n\n // The `checkHeader` method is called before this method and parses the\n // version from the header. The specification states in section 7.5.2\n // that the version from the catalog, if present, should overwrite the\n // version from the header.\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Read the PDF format version.\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this._version) {\n // Remove the \"%PDF-\" prefix.\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get xfaData() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n try {\n entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n return entries;\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n try {\n entries[name] = stringToUTF8String(data.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return entries;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (stream instanceof BaseStream) {\n xfaImages.set(key, stream.getBytes());\n }\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (xfa instanceof BaseStream && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n let version = this._version;\n if (\n typeof version !== \"string\" ||\n !PDF_HEADER_VERSION_REGEXP.test(version)\n ) {\n warn(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n }\n break;\n }\n\n if (customValue === undefined) {\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization, xref } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n // Help improve performance of the `Catalog.getPageIndex` method.\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n\n return [obj, ref];\n }\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearGlobalCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\n return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\"\n ? FontType.CIDFONTTYPE0C\n : FontType.CIDFONTTYPE0;\n case \"OpenType\":\n return FontType.OPENTYPE;\n case \"TrueType\":\n return FontType.TRUETYPE;\n case \"CIDFontType2\":\n return FontType.CIDFONTTYPE2;\n case \"MMType1\":\n return FontType.MMTYPE1;\n case \"Type0\":\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!(groups && groups[1]),\n isZeroWidthDiacritic: !!(groups && groups[2]),\n isInvisibleFormatMark: !!(groups && groups[3]),\n };\n CategoryCache.set(char, category);\n return category;\n}\n\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\nexport {\n clearUnicodeCaches,\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n\n const id =\n ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n collectFields,\n pageIndex,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!(pageRef instanceof Ref)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n quadPointsLists.push([]);\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate =\n typeof modificationDate === \"string\" ? modificationDate : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then(resources => {\n const opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (width instanceof Name) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType =\n rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n const fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance =\n typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => typeof item === \"string\")\n .map(item => stringToPDFString(item));\n } else if (formValue instanceof Name) {\n return stringToPDFString(formValue.name);\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(\n content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const operatorList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n matrix,\n ]);\n\n const stream = new StringStream(content);\n return evaluator\n .getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList,\n })\n .then(function () {\n operatorList.addOp(OPS.endAnnotation, []);\n return operatorList;\n });\n }\n );\n }\n\n async save(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\n return null;\n }\n\n let appearance = await this._getAppearance(\n evaluator,\n task,\n annotationStorage\n );\n if (appearance === null) {\n return null;\n }\n const { xref } = evaluator;\n\n const dict = xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n appearanceDict.set(\"BBox\", bbox);\n\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n writeDict(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n return [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n ];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (!annotationStorage || isPassword) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let value = storageEntry && storageEntry.value;\n if (value === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await this._getFontData(evaluator, task);\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight - defaultPadding,\n totalWidth - 2 * hPadding,\n value,\n font,\n lineCount\n );\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n value,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n hPadding,\n vPadding\n );\n }\n\n // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\n hPadding,\n vPadding\n );\n }\n\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\n font,\n fontSize,\n totalWidth,\n alignment,\n hPadding,\n vPadding\n );\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _getTextWidth(text, font) {\n return (\n font\n .charsToGlyphs(text)\n .reduce((width, glyph) => width + glyph.width, 0) / 1000\n );\n }\n\n _computeFontSize(height, width, text, font, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n // Represent the percentage of the height of a single-line field over\n // the font size.\n // Acrobat seems to use this value.\n const LINE_FACTOR = 1.35;\n\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(\n Math.min(height / LINE_FACTOR, width / textWidth)\n );\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions,\n });\n }\n\n const isTooBig = fsize => {\n // Return true when the text doesn't fit the given height.\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 12 (this is the default font size in\n // Acrobat).\n // Then we'll adjust font size to what we have really.\n fontSize = 12;\n let lineHeight = fontSize * LINE_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n\n break;\n }\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, fontSize];\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n // We need to get the width of the text in order to align it correctly\n const width = this._getTextWidth(text, font) * fontSize;\n let shift;\n if (alignment === 1) {\n // Center\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n\n return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n text,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding\n ) {\n const lines = text.split(/\\r\\n?|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n padding,\n -fontSize // <0 because a line is below the previous one\n )\n );\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width, cache = {}) {\n // TODO: need to handle chars which are not in the font.\n line = cache.line || font.encodeString(line).join(\"\");\n\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue,\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (this.parent instanceof Ref) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (this.parent instanceof Dict) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n const xref = params.xref;\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(parameters);\n\n const dict = parameters.dict;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = parameters.dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType =\n parentSubtype instanceof Name ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.FREETEXT;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = parameters.dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = parameters.dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obsure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(value instanceof Name)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n processed.forEach(ref => {\n nonBlendModesSet.put(ref);\n });\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn(\"Image exceeded maximum allowed size and was removed.\");\n return;\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n const interpolate = dict.get(\"I\", \"Interpolate\");\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(\n bitStrideLength * h,\n /* forceClamped = */ true\n );\n const decode = dict.getArray(\"D\", \"Decode\");\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addOp(OPS.paintImageMaskXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n });\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addOp(OPS.paintImageXObject, args);\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (!(font instanceof Ref)) {\n throw new FormatError('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!(font instanceof Dict)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && descriptor instanceof Dict) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\n } catch (ex) {}\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n optionalContentGroups instanceof Dict\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy:\n optionalContent.get(\"P\") instanceof Name\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addOp(globalImage.fn, globalImage.args);\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addOp(localImage.fn, localImage.args);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n const arrItem = arr[i];\n if (typeof arrItem === \"string\") {\n Array.prototype.push.apply(\n combinedGlyphs,\n self.handleText(arrItem, state)\n );\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [\n (matrix[0] * x + matrix[1] * y) / scale,\n (matrix[2] * x + matrix[3] * y) / scale,\n ];\n }\n\n function compareWithLastPosition() {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n\n const shiftedX = posX - viewBox[0];\n const shiftedY = posY - viewBox[1];\n\n if (\n shiftedX < 0 ||\n shiftedX > viewBox[2] ||\n shiftedY < 0 ||\n shiftedY > viewBox[3]\n ) {\n return false;\n }\n\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return true;\n }\n\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n\n let rotate = -1;\n // Take into account the rotation is the current transform.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n // This is not a 0, 90, 180, 270 rotation so:\n // - remove the scale factor from the matrix to get a rotation matrix\n // - apply the inverse (which is the transposed) to the positions\n // and we can then compare positions of the glyphes to detect\n // a whitespace.\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(\n lastPosX,\n lastPosY,\n textContentItem.prevTransform\n );\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n\n // When the total height of the current chunk is negative\n // then we're writing from bottom to top.\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return true;\n }\n\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (\n !addFakeSpaces(\n advanceY,\n textContentItem.prevTransform,\n textOrientation\n )\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: Math.abs(advanceY),\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return true;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n\n // When the total width of the current chunk is negative\n // then we're writing from right to left.\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return true;\n }\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (\n !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n ) {\n if (textContentItem.str.length === 0) {\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: Math.abs(advanceX),\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n\n return true;\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n if (glyph.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n if (\n glyph.isWhitespace &&\n (i === 0 ||\n i + 1 === ii ||\n glyphs[i - 1].isWhitespace ||\n glyphs[i + 1].isWhitespace ||\n extraSpacing)\n ) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n continue;\n }\n\n if (!compareWithLastPosition()) {\n // The glyph is not in page so just skip it.\n continue;\n }\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (glyph.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n if (glyph.isWhitespace) {\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n textChunk.str.push(\" \");\n } else {\n let glyphUnicode = glyph.unicode;\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n textChunk.str.push(glyphUnicode);\n }\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf, textOrientation) {\n if (\n textOrientation * textContentItem.spaceInFlowMin <= width &&\n width <= textOrientation * textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (args[1] instanceof Dict) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName =\n baseEncodingName instanceof Name ? baseEncodingName.name : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const data = xref.fetchIfRef(diffEncoding[j]);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n throw new FormatError(\"Encoding is not a Name nor a Dict\");\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (\n Number.isNaN(code) &&\n Number.isInteger(parseInt(codeStr, 16))\n ) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n default:\n // 'uniXXXX'/'uXXXX{XX}' glyphs\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n continue;\n }\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (cmapObj instanceof Name) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (cmapObj instanceof BaseStream) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (\n typeof diffEntry === \"number\" ||\n diffEntry instanceof Ref\n ) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n // Prevent circular references in Type3 fonts.\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n type3FontRefs.put(this.dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n fn >= OPS.moveTo &&\n fn <= OPS.endPath && // Path operator\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n StreamType,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n bytesLength < MAX_ADLER32_LENGTH,\n 'computeAdler32: Unsupported \"bytes\" length.'\n );\n }\n let a = 1,\n b = 0;\n for (let i = 0; i < bytesLength; ++i) {\n // No modulo required in the loop if `bytesLength < 5552`.\n a += bytes[i] & 0xff;\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default:\n // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary.\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the *entire* dictionary.\n const dictBytes = stream.getBytes(dictLength);\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf).\n if (divideBy === 10 && sign === 0) {\n warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n // This is consistent with Adobe Reader (fixes bug1753983.pdf).\n if (divideBy === 0 && sign === -1) {\n warn(\"Lexer.getNumber - treating a single minus sign as zero.\");\n return 0;\n }\n }\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n );\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n linDict instanceof Dict &&\n typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length, forceClamped = false) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n const subarray = this.buffer.subarray(pos, end);\n // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n return forceClamped && !(subarray instanceof Uint8ClampedArray)\n ? new Uint8ClampedArray(subarray)\n : subarray;\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type})` +\n \" is not implemented\"\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xff;\n }\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one order of magnitude smaller than expected (fixes\n // issue10880.pdf and issue10989.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 10\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n\n if (resetContextProbabilities) {\n bitModel.reset();\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const resetContextProbabilities =\n codingStyleParameters.resetContextProbabilities;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n ]);\n const HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n ]);\n const HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!(params instanceof Dict)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n info,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n getCharUnicodeCategory,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n\n const category = getCharUnicodeCategory(unicode);\n this.isWhitespace = category.isWhitespace;\n this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n }\n\n matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\n this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont\n );\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n let fallbackName = \"sans-serif\";\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n this.fallbackName = fallbackName;\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = name.search(/Black/g) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n // Fixes issue11242_reduced.pdf\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n file.skip(2 + 2); // length + language\n\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (\n (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n ) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack[stack.length - 1];\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n this._glyphCache[charcode] = glyph;\n }\n return glyph;\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n const CharstringValidationData = [\n null,\n { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n null,\n { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n { id: \"vmoveto\", min: 1, stackClearing: true },\n { id: \"rlineto\", min: 2, resetStack: true },\n { id: \"hlineto\", min: 1, resetStack: true },\n { id: \"vlineto\", min: 1, resetStack: true },\n { id: \"rrcurveto\", min: 6, resetStack: true },\n null,\n { id: \"callsubr\", min: 1, undefStack: true },\n { id: \"return\", min: 0, undefStack: true },\n null, // 12\n null,\n { id: \"endchar\", min: 0, stackClearing: true },\n null,\n null,\n null,\n { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"hintmask\", min: 0, stackClearing: true },\n { id: \"cntrmask\", min: 0, stackClearing: true },\n { id: \"rmoveto\", min: 2, stackClearing: true },\n { id: \"hmoveto\", min: 1, stackClearing: true },\n { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"rcurveline\", min: 8, resetStack: true },\n { id: \"rlinecurve\", min: 8, resetStack: true },\n { id: \"vvcurveto\", min: 4, resetStack: true },\n { id: \"hhcurveto\", min: 4, resetStack: true },\n null, // shortint\n { id: \"callgsubr\", min: 1, undefStack: true },\n { id: \"vhcurveto\", min: 4, resetStack: true },\n { id: \"hvcurveto\", min: 4, resetStack: true },\n ];\n const CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n ];\n\n // eslint-disable-next-line no-shadow\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n }\n return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n const valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (let i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n const layout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.privateDict = null;\n }\n }\n return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const layout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.subrsIndex = null;\n }\n }\n return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (let i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (let j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\nfunction getUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUint16(data, start + 2) === 1\n ? getUint32(data, start + 8)\n : getUint32(data, start + 16);\n const format = getUint16(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUint16(data, start + offset + 2); // length\n const segCount = getUint16(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUint16(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUint16(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUint16(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = getUint32(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = getUint32(data, p);\n ranges.push({\n start,\n end: getUint32(data, p + 4),\n idDelta: getUint32(data, p + 8) - start,\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = getUint32;\n } else {\n itemSize = 2;\n itemDecode = (data, offset) => 2 * getUint16(data, offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = getInt16(code, i);\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = getUint16(code, i);\n const glyphIndex = getUint16(code, i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = getInt16(code, i);\n arg2 = getInt16(code, i + 2);\n } else {\n arg1 = getUint16(code, i);\n arg2 = getUint16(code, i + 2);\n }\n i += 4;\n } else {\n if (flags & 0x02) {\n arg1 = getInt8(code, i++);\n arg2 = getInt8(code, i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(code, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(code, i);\n scaleY = getFloat214(code, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(code, i);\n scale01 = getFloat214(code, i + 2);\n scale10 = getFloat214(code, i + 4);\n scaleY = getFloat214(code, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n // TODO: the transform should be applied only if there is a scale:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n\n if (!(flags & 0x02)) {\n // TODO: we must use arg1 and arg2 to make something similar to:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n }\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(getUint16(code, i));\n i += 2;\n }\n const instructionLength = getUint16(code, i);\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += getInt16(code, i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += getInt16(code, i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour[contour.length - 1].flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUint16(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getUint32(data, p + 8);\n const length = getUint32(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUint16(data, offset + 18);\n indexToLocFormat = getUint16(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426,\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439,\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450,\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461,\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441,\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462,\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n const COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n };\n\n // eslint-disable-next-line no-shadow\n class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(\n subrs[subrNumber],\n subrs,\n seacAnalysisEnabled\n );\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n }\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n const EEXEC_ENCRYPT_KEY = 55665;\n const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n }\n\n // eslint-disable-next-line no-shadow\n class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n prevChar() {\n this.stream.skip(-2);\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n } else if (token === \"/\") {\n // The expected 'ND' or '|-' token is missing, avoid swallowing\n // the start of the next glyph (fixes issue14462_reduced.pdf).\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n }\n\n return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n FormatError,\n info,\n IsEvalSupportedCached,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (let j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n );\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && IsEvalSupportedCached.value) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (typeof a === \"boolean\") {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n }\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n // eslint-disable-next-line no-shadow\n class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(\n stack,\n stack.splice(stack.length - n, n - j)\n );\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n }\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n this._imageCache.forEach(imageData => {\n byteSize += imageData.byteSize;\n });\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n // Handles special case of mainly LaTeX documents which use image masks to\n // draw lines with the current fill style.\n // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n // have been found at iFirstSave.\n const iFirstPIMXO = iFirstSave + 2;\n let i;\n for (i = 0; i < count; i++) {\n const arg = argsArray[iFirstPIMXO + 4 * i];\n const imageMask = arg.length === 1 && arg[0];\n if (\n imageMask &&\n imageMask.width === 1 &&\n imageMask.height === 1 &&\n (!imageMask.data.length ||\n (imageMask.data.length === 1 && imageMask.data[0] === 0))\n ) {\n fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n continue;\n }\n break;\n }\n return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n count = handlePaintSolidColorImageMask(\n iFirstSave,\n count,\n fnArray,\n argsArray\n );\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n arg.data instanceof Uint8ClampedArray,\n 'OperatorList._transfers: Unsupported \"arg.data\" type.'\n );\n }\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (filter instanceof Name) {\n switch (filter.name) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n // TODO cache rendered images?\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n smaskData = smask;\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n imgArray instanceof Uint8ClampedArray,\n 'PDFImage.createMask: Unsupported \"imgArray\" type.'\n );\n }\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8ClampedArray(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8ClampedArray(computedLength);\n data.set(imgArray);\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n let imgArray;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // If imgArray came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (this.image instanceof DecodeStream) {\n imgData.data = imgArray;\n } else {\n const newArray = new Uint8ClampedArray(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(\n imageLength,\n drawWidth,\n drawHeight,\n /* forceRGB = */ true\n );\n return imgData;\n }\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes);\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length, /* forceClamped = */ true);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n\n const markInfo = Object.assign(Object.create(null), {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n });\n for (const key in markInfo) {\n if (!obj.has(key)) {\n continue;\n }\n const value = obj.get(key);\n if (typeof value !== \"boolean\") {\n continue;\n }\n markInfo[key] = value;\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name:\n typeof group.get(\"Name\") === \"string\"\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent:\n typeof group.get(\"Intent\") === \"string\"\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(value instanceof Ref)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (value instanceof Ref && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name:\n typeof config.get(\"Name\") === \"string\"\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator:\n typeof config.get(\"Creator\") === \"string\"\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState:\n config.get(\"BaseState\") instanceof Name\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n const charBuf = [];\n for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n currentLabel = charBuf.join(\"\");\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const obj = this._catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n\n for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\n\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n // The number of elements must be even.\n if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (obj instanceof Dict) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(key, value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(key, value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n fontFallback(id, handler) {\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n });\n }\n\n cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n\n return Promise.all(promises).then(translatedFonts => {\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n });\n }\n\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache;\n let currentPageIndex = 0;\n\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n\n const obj = await xref.fetchAsync(currentNode);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n // Help improve performance of the `getPageIndex` method.\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n );\n }\n const { objId } = currentNode;\n\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Promise<Map>}\n */\n async getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n // Help improve performance of the `getPageIndex` method.\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n /**\n * @typedef ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n // TODO: pdf spec mentions urls can be relative to a Base\n // entry in the dictionary.\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (remoteDest instanceof Name) {\n remoteDest = remoteDest.name;\n }\n if (typeof url === \"string\") {\n const baseUrl = url.split(\"#\")[0];\n if (typeof remoteDest === \"string\") {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\" || Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n clearPrimitiveCaches();\n clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj instanceof BaseStream) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!(value instanceof Name)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (kid instanceof Ref) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (kid instanceof Dict) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n\n const type =\n kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId:\n kidDict.getRaw(\"Stm\") instanceof Ref\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId:\n kidDict.getRaw(\"Obj\") instanceof Ref\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (obj instanceof Dict) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplifed object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n value instanceof BaseStream ||\n Array.isArray(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n let remainder = 0;\n for (let z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursivly to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // Javascript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a &nbsp is unbreakable\n // but in real life Acrobat can break strings on &nbsp.\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n // Check if the current object ends with an 'endobj' operator.\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n // Check if an \"obj\" occurrence is actually a new object,\n // i.e. the current object is missing the 'endobj' operator.\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n warn(\n 'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n let trailerDict;\n for (let i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has(\"ID\")) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n\n this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","finished","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","setup","handler","port","testMessageProcessed","on","wphSetupTest","data","send","Uint8Array","wphConfigure","setVerbosityLevel","verbosity","wphSetupDoc","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","docId","docBaseUrl","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","catch","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","evaluatorOptions","enableXfa","pdfManagerCapability","newPdfManager","source","LocalPdfManager","password","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","AbortException","stream","bytes","byteLength","wphSetupGetPage","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","wphSetupGetPageIndex","pageRef","Ref","get","num","gen","ensureCatalog","wphSetupGetDestinations","wphSetupGetDestination","id","wphSetupGetPageLabels","wphSetupGetPageLayout","wphSetupGetPageMode","wphSetupGetAttachments","wphSetupGetJavaScript","wphSetupGetDocJSActions","wphSetupGetOutline","wphSetupGetMetadata","wphSetupGetMarkInfo","wphSetupGetData","intent","getAnnotationsData","annotationStorage","filename","promises","serializeXfaData","save","finally","acroForm","acroFormRef","xref","startXRef","newRefs","xfaData","refs","filter","x","reduce","a","b","concat","xfa","Dict","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","resetNewRef","incrementalUpdate","originalData","hasXfa","wphSetupRenderPage","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","featureId","UNSUPPORTED_FEATURES","errorOperatorList","error","wphExtractText","extractTextContent","includeMarkedContent","combineTextItems","wphGetStructTree","fontFallback","wphCleanup","cleanup","wphTerminate","waitOn","cleanupPromise","clearGlobalCaches","destroy","wphReady","initializeFromPort","isMessagePort","maybePort","postMessage","window","self","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","isSameOrigin","baseUrl","otherUrl","base","URL","origin","other","_isValidProtocol","url","protocol","createValidAbsoluteUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","shadow","obj","prop","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","prototype","details","status","FormatError","bytesToString","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","IsLittleEndianCached","Function","IsEvalSupportedCached","hexNumbers","n","padStart","Util","makeHexColor","r","g","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","compare","orderedX","sort","orderedY","result","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","process","versions","nw","electron","type","CIRCULAR_REF","Symbol","EOF","Name","NameClosure","nameCache","nameValue","_clearCache","Cmd","CmdClosure","cmdCache","cmd","cmdValue","nonSerializable","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","fetch","getAsync","fetchAsync","getArray","getKeys","getRawValues","values","has","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","Map","dict","entries","subDict","clear","RefClosure","refCache","refValue","RefSet","parent","_set","Set","put","add","remove","delete","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","clearPrimitiveCaches","parseDocBaseUrl","href","BasePdfManager","_docId","_password","_docBaseUrl","args","pdfDocument","ensureXRef","catalog","manuallyTriggered","requestRange","begin","end","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","ceil","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","isDataLoaded","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","getByte","getBytes","forceClamped","strEnd","Uint8ClampedArray","getByteRange","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","getBaseStreams","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","bind","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","includes","groupedChunks","prevChunk","isProgressive","loadedRequests","lastChunk","onError","err","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","ParserEOFException","XRefEntryException","DocStats","_handler","_streamTypes","_fontTypes","_send","streamTypes","fontTypes","addStreamType","addFontType","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","parseInt","escapePDFName","substring","_collectJS","entry","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","ident","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","newWindow","isEmpty","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","skip","reset","moveStart","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","createObjId","getPageObjId","_getInheritableProperty","content","resources","_getBoundingBox","bbox","box","mediaBox","cropBox","_onSubStreamError","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","annotation","mustBePrinted","loadResources","objectLoader","ObjectLoader","load","contentStreamPromise","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","flush","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","opLists","addOp","addOpList","getTextContent","viewBox","getStructTree","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","annotationsData","viewable","printable","annots","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","jsActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","arg","XRef","_pagePromises","_version","_globalIdFactory","getDocId","createFontId","Catalog","version","linearization","Linearization","step","startXRefLength","found","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","every","field","fetchIfRef","isSignature","isInvisible","template","datasets","config","connectionSet","localeSet","stylesheet","_","hasOwnProperty","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","fontRes","assign","pdfFonts","initialState","clone","fonts","fontName","descriptor","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","encrypt","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","_getLinearizationPage","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","checkFirstPage","checkLastPage","setActualNumPages","pagesTree","getAllPageDicts","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","some","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","metrics","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","ArialMT","Arial","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","Helvetica","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","normalizeFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","w","currentCode","currentArray","newWidths","unicode","glyphIndex","charUnicode","index","unicode1","unicode2","widths","systemInfo","lineHeight","lineGap","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","getFontType","subtype","isStandardFont","recoverGlyphName","glyphsUnicodeMap","getUnicodeForGlyph","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","charCode","baseEncoding","isSymbolicFont","flags","isInternalFont","baseEncodingName","getEncoding","StandardEncoding","differences","glyphName","getGlyphsUnicode","standardGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","collectFields","_getPageIndex","_create","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","getRgbColor","color","defaultColor","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getQuadPoints","quadPoints","quadPointsLists","jj","y","quadPointsList","minX","maxX","minY","maxY","mX","MX","mY","MY","quadPoint","MAX_VALUE","MIN_VALUE","getTransformMatrix","matrix","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setBorderAndBackgroundColors","_streams","appearance","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_fallbackFontDict","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","title","_title","contents","hasFlag","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","array","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","evaluator","isUsingOwnCanvas","appearanceDict","fallbackFontDict","strokeColor","fillColor","unshift","loopDict","width","style","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","pointsArray","points","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","annotationType","fieldValue","_decodeFormValue","defaultFieldValue","alternativeText","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","createCipherTransform","encryptString","_getSaveFieldResources","bufferOriginal","writeDict","bufferNew","isPassword","trim","lineCount","multiLine","defaultPadding","hPadding","totalHeight","totalWidth","_getFontData","fontSize","_computeFontSize","descent","vPadding","alignment","textAlignment","_getMultilineAppearance","encodedString","encodeString","comb","_getCombAppearance","renderedText","_renderText","_getTextWidth","text","charsToGlyphs","glyph","height","roundWithTwoDigits","LINE_FACTOR","textWidth","lines","cachedLines","line","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","numberOfLines","round","fontColor","createDefaultAppearance","shift","toFixed","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","combWidth","renderedComb","padding","scale","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","exportValue","buttonValue","savedAppearance","_saveCheckbox","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","option","isOptionArray","displayValue","combo","multiSelect","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","state","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","lineCoordinates","from","interiorColor","borderWidth","borderAdjust","controlPointsDistance","tan","xMid","yMid","xOffset","yOffset","vertices","rawVertices","Infinity","vertex","inkLists","rawInkLists","inkList","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","EvaluatorPreprocessor","operation","fn","savedStatesDepth","colorCmd","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","_cache","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","pdfFunctionFactory","_parse","cachedColorSpace","PatternCS","colorSpaces","resourcesCS","mode","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","tmpBuf","Float32Array","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","k","CalGrayCSClosure","A","AG","G","L","YW","val","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","Y","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","M","N","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","TimeSlotManager","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","checked","endTime","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","_pdfFunctionFactory","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","ok","statusText","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","getFontNameToFileMap","buildFormXObject","xobj","optionalContent","groupOptions","parseMarkedContentProps","group","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","buildPaintImageXObject","image","isInline","localImageCache","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","createImageData","shouldCache","addDependency","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","dependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translateFont","translatedFont","fontType","stats","fontFile3","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","pop","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","argument","promiseBody","next","ready","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","combinedGlyphs","arrLength","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","seenStyles","TextState","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","vmetric","scaledDim","wordSpacing","glyphUnicode","transf","enqueueChunk","batch","enqueue","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","tag","mcid","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","toUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","diffEncoding","defaultEncoding","isNonsymbolicFont","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","codeStr","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","ucs2CMap","CMapFactory","useCMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getSerifFonts","search","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","Font","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","glyphScaleFactors","subtypeEntry","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","sent","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","gStateKey","stateStack","old","prev","f","opMap","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","l","re","S","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","MAX_INVALID_PATH_OPS","parser","Parser","lexer","Lexer","nonProcessedArgs","_numInvalidPathOPS","getObj","opSpec","argsLength","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","isIdentityCMap","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","readString","len","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","allowStreams","imageCache","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictLength","beginInlineImagePos","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheEntry","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","xrefStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","input","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","streams","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","contextCache","decodeInteger","procedure","contexts","readBits","bit","readBit","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustToUnicode","amend","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","matchesForCache","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","proto","strings","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","extraProperties","exportDataProperties","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","post","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","NaN","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","write","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","toArray","mapping","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","spaceWidth","possibleSpaceReplacements","_charToGlyph","widthCode","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParserClosure","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","stack_div","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","pair","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","valueLength","setByName","createTables","layout","CFFTopDictClosure","CFFPrivateDictClosure","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler_add","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","Courier","ZapfDingbats","ArialNarrow","ArialBlack","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","H","P","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","copyright","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","multiply","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","DataView","byteOffset","getSize","totalSize","ArrayBuffer","setUint32","setUint16","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","entriesCount","entrySize","maxPower2","tablesNames","tableName","tableOffsets","paddedLength","quad","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","Type1CharString","Type1CharStringClosure","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1ParserClosure","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","SMALL_NUMBER","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","r0","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fnRefs","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","call","copy","roll","counter","atan","cos","LN10","sin","PostScriptCompilerClosure","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","opValue","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_refCache","_byteSize","imageData","_cacheLimitReached","pageIndexSet","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","temp","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addState","parentState","checkFn","iterateFn","processFn","handlePaintSolidColorImageMask","iFirstSave","iFirstPIMXO","InitialState","iterateInlineImageGroup","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","_totalLength","_resolved","_transfers","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","smaskData","maskData","computedLength","haveFullData","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","newArray","imageLength","maybeUndoPreblend","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","metadata","streamRef","encryptMetadata","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","init","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","outlineItem","unsafeUrl","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","destinations","_readDests","dests","NameTree","getAll","getDestination","allDest","pageLabels","_readPageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","namedAction","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","description","contentAvailable","_filename","contentRef","fileObj","_repair","SimpleXMLParser","lowerCaseName","xmlDocument","parseFromString","_metadataMap","_data","d2","d3","_getSequence","nodeName","childNodes","_parseArray","hasChildNodes","seqNode","rdf","documentElement","firstChild","nextSibling","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","child","searchNode","paths","siblingPos","dump","attribute","hasAttributes","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","role","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","writeValue","writeStream","string","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","updateXFA","oldXfa","newXfa","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","XFAParser","_createDocument","binder","Binder","form","dataHandler","DataHandler","$globalData","_createPagesHelper","iterator","$toPages","nextIteration","setTimeout","_createPages","pages","dims","fontFinder","FontFinder","typeface","usedTypefaces","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","html","class","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","HTMLResult","EMPTY","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","FAILURE","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","acc","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","open","_findDataByNameToConsume","isValue","global","_setProperties","target","connection","setProperty","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","Reflect","construct","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","getContainedChildren","SubformSet","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","thickness","arc","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","display","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","exData","float","integer","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","Filter","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","atob","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","bgColor","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","findIndex","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","nullTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","wrapper","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","real","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","nsPrefix","isNsAgnostic","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","uri","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","Xdc","Xdp","packets","Xsl","debug","Zpl","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","br","li","ol","span","sub","sup","ul","namespaceId","xrefstms","_cacheMap","_pendingRefs","_newRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","updateEntries","checkPos","tokenStr","objToken","xrefTagOffset","pagesDict","pagesCount","startXRefParsedCache","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","allSettled","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"pdf.worker.js","mappings":"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E,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,IAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,GAAF,IAAS,KAATA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,GAAVA;EACAA,EAAE,IAAF,IAAU,KAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;EACAA,EAAE,IAAF,IAAU,IAAVA;AAhZkC,EAApC;;AAsZA,MAAMo7F,uCAAuCvuF,uCAAsB,UACjE7M,CADiE,EAEjE;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;AAL2C,EAA7C;;AAWA,MAAMq7F,oCAAoCxuF,uCAAsB,UAAU7M,CAAV,EAAa;EAC3EA,EAAE,CAAF,IAAO,EAAPA;EACAA,EAAE,CAAF,IAAO,EAAPA;EACAA,EAAE,CAAF,IAAO,GAAPA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,EAAF,IAAQ,EAARA;EACAA,EAAE,EAAF,IAAQ,GAARA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,EAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EACAA,EAAE,GAAF,IAAS,GAATA;EAC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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/dataset_reader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(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.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n UNSUPPORTED_FEATURES,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker.\n handler.send(\"test\", data instanceof Uint8Array);\n });\n\n handler.on(\"configure\", function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const apiVersion = docParams.apiVersion;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (typeof ReadableStream === \"undefined\") {\n const partialMsg =\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n if (isNodeJS) {\n throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n }\n throw new Error(partialMsg + \"please update to a supported browser.\");\n }\n }\n\n const docId = docParams.docId;\n const docBaseUrl = docParams.docBaseUrl;\n const workerHandlerName = docParams.docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be successfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager(data, evaluatorOptions, enableXfa) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n const source = data.source;\n if (source.data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n source.data,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n const disableAutoFetch =\n source.disableAutoFetch || fullRequest.isStreamingSupported;\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n newPdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n source.password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n const readPromise = new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n const evaluatorOptions = {\n maxImageSize: data.maxImageSize,\n disableFontFace: data.disableFontFace,\n ignoreErrors: data.ignoreErrors,\n isEvalSupported: data.isEvalSupported,\n fontExtraProperties: data.fontExtraProperties,\n useSystemFonts: data.useSystemFonts,\n cMapUrl: data.cMapUrl,\n standardFontDataUrl: data.standardFontDataUrl,\n };\n\n getPdfManager(data, evaluatorOptions, data.enableXfa)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.onLoadedStream().then(function (stream) {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return page.getAnnotationsData(intent);\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n pdfManager.requestLoadedStream();\n\n const promises = [\n pdfManager.onLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n for (const ref of refs) {\n newRefs = ref\n .filter(x => x !== null)\n .reduce((a, b) => a.concat(b), newRefs);\n }\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n acroFormRef = null;\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewRef();\n }\n } else if (xfa) {\n acroFormRef = null;\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n xref.resetNewRef();\n\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n xfaData,\n });\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function wphCleanup(data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function wphTerminate(data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n const nameValue = nameCache[name];\n // eslint-disable-next-line no-restricted-syntax\n return nameValue ? nameValue : (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n const cmdValue = cmdCache[cmd];\n // eslint-disable-next-line no-restricted-syntax\n return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n const refValue = refCache[key];\n // eslint-disable-next-line no-restricted-syntax\n return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n [Symbol.iterator]() {\n return this._set.values();\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n [Symbol.iterator]() {\n return this._map.values();\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createValidAbsoluteUrl,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n const catalog = this.pdfDocument.catalog;\n return shadow(this, \"docBaseUrl\", catalog.baseUrl || this._docBaseUrl);\n }\n\n onLoadedStream() {\n unreachable(\"Abstract method `onLoadedStream` called\");\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream() {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream() {}\n\n onLoadedStream() {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream() {\n this.streamManager.requestAllChunks();\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n onLoadedStream() {\n return this.streamManager.onLoadedStream();\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n return bytes.subarray(pos, strEnd);\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n return bytes.subarray(pos, end);\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n onLoadedStream() {\n return this._loadedStreamCapability.promise;\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks() {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n FontType,\n objectSize,\n StreamType,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\nclass DocStats {\n constructor(handler) {\n this._handler = handler;\n\n this._streamTypes = new Set();\n this._fontTypes = new Set();\n }\n\n _send() {\n const streamTypes = Object.create(null),\n fontTypes = Object.create(null);\n for (const type of this._streamTypes) {\n streamTypes[type] = true;\n }\n for (const type of this._fontTypes) {\n fontTypes[type] = true;\n }\n this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n }\n\n addStreamType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n }\n if (this._streamTypes.has(type)) {\n return;\n }\n this._streamTypes.add(type);\n this._send();\n }\n\n addFontType(type) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n }\n if (this._fontTypes.has(type)) {\n return;\n }\n this._fontTypes.add(type);\n this._send();\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code = code && stringToPDFString(code);\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"&lt;\",\n /* > */ 0x3e: \"&gt;\",\n /* & */ 0x26: \"&amp;\",\n /* \" */ 0x22: \"&quot;\",\n /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nexport {\n collectActions,\n DocStats,\n encodeToXmlString,\n escapePDFName,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n isWhiteSpace,\n log2,\n MissingDataException,\n ParserEOFException,\n parseXFAPath,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n return bytes.subarray(pos, strEnd);\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n return bytes.subarray(pos, end);\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayEqual,\n OPS,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n getInheritableProperty,\n isWhiteSpace,\n MissingDataException,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { DatasetReader } from \"./dataset_reader.js\";\nimport { Linearization } from \"./parser.js\";\nimport { NullStream } from \"./stream.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n return shadow(\n this,\n \"resources\",\n this._getInheritableProperty(\"Resources\") || Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n\n const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n return box;\n }\n warn(`Empty /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (typeof obj !== \"number\" || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n let view;\n if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n view = mediaBox;\n } else {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n view = box;\n } else {\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n }\n return shadow(this, \"view\", view || mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises);\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n function ([pageOpList, annotations]) {\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (const opList of opLists) {\n pageOpList.addOpList(opList);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n pageOpList.flush(true);\n return { length: pageOpList.totalLength };\n });\n }\n );\n }\n\n extractTextContent({\n handler,\n task,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n combineTextItems,\n sink,\n viewBox: this.view,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n getAnnotationsData(intent) {\n return this._parsedAnnotations.then(function (annotations) {\n const annotationsData = [];\n\n if (annotations.length === 0) {\n return annotationsData;\n }\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n if (\n intentAny ||\n (intentDisplay && annotation.viewable) ||\n (intentPrint && annotation.printable)\n ) {\n annotationsData.push(annotation.data);\n }\n }\n return annotationsData;\n });\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n return annotations.filter(annotation => !!annotation);\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, stream) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n stream instanceof BaseStream,\n 'PDFDocument: Invalid \"stream\" argument.'\n );\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n\n // The `checkHeader` method is called before this method and parses the\n // version from the header. The specification states in section 7.5.2\n // that the version from the catalog, if present, should overwrite the\n // version from the header.\n if (this.catalog.version) {\n this._version = this.catalog.version;\n }\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Read the PDF format version.\n const MAX_PDF_VERSION_LENGTH = 12;\n let version = \"\",\n ch;\n while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n if (version.length >= MAX_PDF_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this._version) {\n // Remove the \"%PDF-\" prefix.\n this._version = version.substring(5);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get _xfaStreams() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n entries[\"xdp:xdp\"] = xfa;\n return entries;\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n entries[name] = data;\n }\n return entries;\n }\n\n get xfaDatasets() {\n const streams = this._xfaStreams;\n if (!streams) {\n return shadow(this, \"xfaDatasets\", null);\n }\n for (const key of [\"datasets\", \"xdp:xdp\"]) {\n const stream = streams[key];\n if (!stream) {\n continue;\n }\n try {\n const str = stringToUTF8String(stream.getString());\n const data = { [key]: str };\n return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n break;\n }\n }\n return shadow(this, \"xfaDatasets\", null);\n }\n\n get xfaData() {\n const streams = this._xfaStreams;\n if (!streams) {\n return null;\n }\n const data = Object.create(null);\n for (const [key, stream] of Object.entries(streams)) {\n if (!stream) {\n continue;\n }\n try {\n data[key] = stringToUTF8String(stream.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return data;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (stream instanceof BaseStream) {\n xfaImages.set(key, stream.getBytes());\n }\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts[pdfFonts.length - 1];\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (xfa instanceof BaseStream && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n let version = this._version;\n if (\n typeof version !== \"string\" ||\n !PDF_HEADER_VERSION_REGEXP.test(version)\n ) {\n warn(`Invalid PDF header version number: ${version}`);\n version = null;\n }\n\n const docInfo = {\n PDFFormatVersion: version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n }\n break;\n }\n\n if (customValue === undefined) {\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (let i = 0, ii = hash.length; i < ii; i++) {\n const hex = hash[i].toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization, xref } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n // Help improve performance of the `Catalog.getPageIndex` method.\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n\n return [obj, ref];\n }\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearGlobalCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\n \"LastChar\",\n widths[widths.length - 2] + widths[widths.length - 1].length - 1\n );\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n switch (type) {\n case \"Type1\":\n if (isStandardFont) {\n return FontType.TYPE1STANDARD;\n }\n return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n case \"CIDFontType0\":\n return subtype === \"CIDFontType0C\"\n ? FontType.CIDFONTTYPE0C\n : FontType.CIDFONTTYPE0;\n case \"OpenType\":\n return FontType.OPENTYPE;\n case \"TrueType\":\n return FontType.TRUETYPE;\n case \"CIDFontType2\":\n return FontType.CIDFONTTYPE2;\n case \"MMType1\":\n return FontType.MMTYPE1;\n case \"Type0\":\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00, // Fixes issue 11016.\n \"ffi\", 0xfb03,\n \"ffl\", 0xfb04,\n \"fi\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!(groups && groups[1]),\n isZeroWidthDiacritic: !!(groups && groups[2]),\n isInvisibleFormatMark: !!(groups && groups[3]),\n };\n CategoryCache.set(char, category);\n return category;\n}\n\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\nexport {\n clearUnicodeCaches,\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n escapeString,\n getModificationDate,\n isAscii,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n stringToUTF16BEString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\n// Represent the percentage of the height of a single-line field over\n// the font size.\n// Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n // Only necessary to prevent the `pdfManager.docBaseUrl`-getter, used\n // with certain Annotations, from throwing and thus breaking parsing:\n pdfManager.ensureCatalog(\"baseUrl\"),\n pdfManager.ensureDoc(\"xfaDatasets\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, baseUrl, xfaDatasets, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n xfaDatasets,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n xfaDatasets,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n\n const id =\n ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n xfaDatasets,\n collectFields,\n pageIndex,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!(pageRef instanceof Ref)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getQuadPoints(dict, rect) {\n if (!dict.has(\"QuadPoints\")) {\n return null;\n }\n\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n quadPointsLists.push([]);\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n ) {\n return null;\n }\n quadPointsLists[i].push({ x, y });\n }\n }\n\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left, top right,\n // bottom right and bottom left. To avoid inconsistency and broken rendering,\n // we normalize all lists to put the quadpoints in the same standard order\n // (see https://stackoverflow.com/a/10729881).\n return quadPointsLists.map(quadPointsList => {\n const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n ([mX, MX, mY, MY], quadPoint) => [\n Math.min(mX, quadPoint.x),\n Math.max(MX, quadPoint.x),\n Math.min(mY, quadPoint.y),\n Math.max(MY, quadPoint.y),\n ],\n [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n );\n return [\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ];\n });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const dict = params.dict;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._fallbackFontDict = null;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate =\n typeof modificationDate === \"string\" ? modificationDate : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the line endings; should only be used with specific annotation types.\n * @param {Array} lineEndings - The line endings array.\n */\n setLineEndings(lineEndings) {\n this.lineEndings = [\"None\", \"None\"]; // The default values.\n\n if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n for (let i = 0; i < 2; i++) {\n const obj = lineEndings[i];\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"None\":\n continue;\n case \"Square\":\n case \"Circle\":\n case \"Diamond\":\n case \"OpenArrow\":\n case \"ClosedArrow\":\n case \"Butt\":\n case \"ROpenArrow\":\n case \"RClosedArrow\":\n case \"Slash\":\n this.lineEndings[i] = obj.name;\n continue;\n }\n }\n warn(`Ignoring invalid lineEnding: ${obj}`);\n }\n }\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas =\n data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return Promise.resolve(new OperatorList());\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resourcesPromise = this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then(resources => {\n const opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n return evaluator\n .getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n })\n .then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.reset();\n return opList;\n });\n });\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (width instanceof Name) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n const dict = parameters.dict;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType =\n rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const dict = params.dict;\n const data = this.data;\n this.ref = params.ref;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(\n params.xref,\n dict,\n AnnotationActionEventType\n );\n }\n\n let fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n if (fieldValue === undefined && params.xfaDatasets) {\n // Try to figure out if we have something in the xfa dataset.\n const path = this._title.str;\n if (path) {\n this._hasValueFromXFA = true;\n data.fieldValue = fieldValue = params.xfaDatasets.getValue(path);\n }\n }\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n const defaultAppearance =\n getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n this._defaultAppearance =\n typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref: params.xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => typeof item === \"string\")\n .map(item => stringToPDFString(item));\n } else if (formValue instanceof Name) {\n return stringToPDFString(formValue.name);\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return Promise.resolve(new OperatorList());\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n return this._getAppearance(evaluator, task, annotationStorage).then(\n content => {\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const operatorList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return operatorList;\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n operatorList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n matrix,\n ]);\n\n const stream = new StringStream(content);\n return evaluator\n .getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList,\n })\n .then(function () {\n operatorList.addOp(OPS.endAnnotation, []);\n return operatorList;\n });\n }\n );\n }\n\n async save(evaluator, task, annotationStorage) {\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n let value = storageEntry && storageEntry.value;\n if (value === this.data.fieldValue || value === undefined) {\n if (!this._hasValueFromXFA) {\n return null;\n }\n value = value || this.data.fieldValue;\n }\n\n // Value can be an array (with choice list and multiple selections)\n if (\n !this._hasValueFromXFA &&\n Array.isArray(value) &&\n Array.isArray(this.data.fieldValue) &&\n value.length === this.data.fieldValue.length &&\n value.every((x, i) => x === this.data.fieldValue[i])\n ) {\n return null;\n }\n\n let appearance = await this._getAppearance(\n evaluator,\n task,\n annotationStorage\n );\n if (appearance === null) {\n return null;\n }\n const { xref } = evaluator;\n\n const dict = xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const newRef = xref.getNewRef();\n const AP = new Dict(xref);\n AP.set(\"N\", newRef);\n\n const encrypt = xref.encrypt;\n let originalTransform = null;\n let newTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n const encoder = val => (isAscii(val) ? val : stringToUTF16BEString(val));\n dict.set(\"V\", Array.isArray(value) ? value.map(encoder) : encoder(value));\n dict.set(\"AP\", AP);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n appearanceDict.set(\"BBox\", bbox);\n\n const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, bufferOriginal, originalTransform);\n bufferOriginal.push(\"\\nendobj\\n\");\n\n const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n writeDict(appearanceDict, bufferNew, newTransform);\n bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n return [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n // data for the new AP\n { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n ];\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (isPassword) {\n return null;\n }\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n let value =\n storageEntry && (storageEntry.formattedValue || storageEntry.value);\n if (value === undefined) {\n if (!this._hasValueFromXFA || this.appearance) {\n // The annotation hasn't been rendered so use the appearance.\n return null;\n }\n // The annotation has its value in XFA datasets but not in the V field.\n value = this.data.fieldValue;\n if (!value) {\n return \"\";\n }\n }\n\n assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n\n value = value.trim();\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return \"\";\n }\n\n let lineCount = -1;\n if (this.data.multiLine) {\n lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await this._getFontData(evaluator, task);\n const [defaultAppearance, fontSize] = this._computeFontSize(\n totalHeight - defaultPadding,\n totalWidth - 2 * hPadding,\n value,\n font,\n lineCount\n );\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = 0;\n }\n\n const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n value,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n hPadding,\n vPadding\n );\n }\n\n // TODO: need to handle chars which are not in the font.\n const encodedString = font.encodeString(value).join(\"\");\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedString,\n totalWidth,\n hPadding,\n vPadding\n );\n }\n\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n encodedString\n )}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const renderedText = this._renderText(\n encodedString,\n font,\n fontSize,\n totalWidth,\n alignment,\n hPadding,\n vPadding\n );\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n async _getFontData(evaluator, task) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = this.data.defaultAppearanceData;\n await evaluator.handleSetFont(\n this._fieldResources.mergedResources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _getTextWidth(text, font) {\n return (\n font\n .charsToGlyphs(text)\n .reduce((width, glyph) => width + glyph.width, 0) / 1000\n );\n }\n\n _computeFontSize(height, width, text, font, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(\n Math.min(height / LINE_FACTOR, width / textWidth)\n );\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions,\n });\n }\n\n const isTooBig = fsize => {\n // Return true when the text doesn't fit the given height.\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 12 (this is the default font size in\n // Acrobat).\n // Then we'll adjust font size to what we have really.\n fontSize = 12;\n let lineHeight = fontSize * LINE_FACTOR;\n let numberOfLines = Math.round(height / lineHeight);\n numberOfLines = Math.max(numberOfLines, lineCount);\n\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n\n break;\n }\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n return [this._defaultAppearance, fontSize];\n }\n\n _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n let shift;\n if (alignment === 1) {\n // Center\n const width = this._getTextWidth(text, font) * fontSize;\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n const width = this._getTextWidth(text, font) * fontSize;\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n shift = shift.toFixed(2);\n vPadding = vPadding.toFixed(2);\n\n return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n const combWidth = (width / this.data.maxLen).toFixed(2);\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${combWidth} 0 Td `);\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n text,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding\n ) {\n const lines = text.split(/\\r\\n?|\\n/);\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n for (const line of lines) {\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (const chunk of chunks) {\n const padding = buf.length === 0 ? hPadding : 0;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n padding,\n -fontSize // <0 because a line is below the previous one\n )\n );\n }\n }\n\n const renderedText = buf.join(\"\\n\");\n return (\n \"/Tx BMC q BT \" +\n defaultAppearance +\n ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width, cache = {}) {\n // TODO: need to handle chars which are not in the font.\n line = cache.line || font.encodeString(line).join(\"\");\n\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue || \"\",\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n }\n\n if (value === null) {\n // Nothing in the annotationStorage.\n if (this.appearance) {\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n return operatorList;\n }\n\n // No appearance\n return new OperatorList();\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n const value = storageEntry && storageEntry.value;\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (this.parent instanceof Ref) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (this.parent instanceof Dict) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = (width - metrics.width) / 2;\n const yShift = (height - metrics.height) / 2;\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n this.checkedAppearance =\n normalAppearance.get(this.data.exportValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n this.checkedAppearance =\n normalAppearance.get(this.data.buttonValue) || null;\n this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n const xref = params.xref;\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type,\n };\n }\n\n async _getAppearance(evaluator, task, annotationStorage) {\n if (this.data.combo) {\n return super._getAppearance(evaluator, task, annotationStorage);\n }\n\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let exportedValue = storageEntry && storageEntry.value;\n if (exportedValue === undefined) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n if (!Array.isArray(exportedValue)) {\n exportedValue = [exportedValue];\n }\n\n const defaultPadding = 2;\n const hPadding = defaultPadding;\n const totalHeight = this.data.rect[3] - this.data.rect[1];\n const totalWidth = this.data.rect[2] - this.data.rect[0];\n const lineCount = this.data.options.length;\n const valueIndices = [];\n for (let i = 0; i < lineCount; i++) {\n const { exportValue } = this.data.options[i];\n if (exportedValue.includes(exportValue)) {\n valueIndices.push(i);\n }\n }\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await this._getFontData(evaluator, task);\n\n let defaultAppearance;\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n const lineHeight = (totalHeight - defaultPadding) / lineCount;\n let lineWidth = -1;\n let value;\n for (const { displayValue } of this.data.options) {\n const width = this._getTextWidth(displayValue);\n if (width > lineWidth) {\n lineWidth = width;\n value = displayValue;\n }\n }\n\n [defaultAppearance, fontSize] = this._computeFontSize(\n lineHeight,\n totalWidth - 2 * hPadding,\n value,\n font,\n -1\n );\n } else {\n defaultAppearance = this._defaultAppearance;\n }\n\n const lineHeight = fontSize * LINE_FACTOR;\n const vPadding = (lineHeight - fontSize) / 2;\n const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n\n let firstIndex;\n if (valueIndices.length === 1) {\n const valuePosition = valueIndices[0];\n const indexInPage = valuePosition % numberOfVisibleLines;\n firstIndex = valuePosition - indexInPage;\n } else {\n // If nothing is selected (valueIndice.length === 0), we render\n // from the first element.\n firstIndex = valueIndices.length ? valueIndices[0] : 0;\n }\n const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n\n const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n\n if (valueIndices.length) {\n // This value has been copied/pasted from annotation-choice-widget.pdf.\n // It corresponds to rgb(153, 193, 218).\n buf.push(\"0.600006 0.756866 0.854904 rg\");\n\n // Highlight the lines in filling a blue rectangle at the selected\n // positions.\n for (const index of valueIndices) {\n if (firstIndex <= index && index < end) {\n buf.push(\n `1 ${\n totalHeight - (index - firstIndex + 1) * lineHeight\n } ${totalWidth} ${lineHeight} re f`\n );\n }\n }\n }\n buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n\n for (let i = firstIndex; i < end; i++) {\n const { displayValue } = this.data.options[i];\n const hpadding = i === firstIndex ? hPadding : 0;\n const vpadding = i === firstIndex ? vPadding : 0;\n buf.push(\n this._renderText(\n displayValue,\n font,\n fontSize,\n totalWidth,\n 0,\n hpadding,\n -lineHeight + vpadding\n )\n );\n }\n\n buf.push(\"ET Q EMC\");\n\n return buf.join(\"\\n\");\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(parameters);\n\n const dict = parameters.dict;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = parameters.dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType =\n parentSubtype instanceof Name ? parentSubtype.name : null;\n const rawParent = parameters.dict.getRaw(\"Parent\");\n this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.FREETEXT;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const { dict } = parameters;\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n let fillColor = null,\n interiorColor = dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null,\n interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n // The default fill color is transparent.\n let fillColor = null;\n let interiorColor = parameters.dict.getArray(\"IC\");\n if (interiorColor) {\n interiorColor = getRgbColor(interiorColor, null);\n fillColor = interiorColor\n ? Array.from(interiorColor).map(c => c / 255)\n : null;\n }\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const { dict } = parameters;\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n if (!(this instanceof PolygonAnnotation)) {\n // Only meaningful for polyline annotations.\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n }\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = parameters.dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n const xref = parameters.xref;\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obscure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [1, 1, 0];\n const fillAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(\n parameters.dict,\n null\n ));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? Array.from(this.color).map(c => c / 255)\n : [0, 0, 0];\n const strokeAlpha = parameters.dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref: parameters.xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(parameters) {\n super(parameters);\n\n const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n let colorCmd;\n if (fontColor.every(c => c === 0)) {\n colorCmd = \"0 g\";\n } else {\n colorCmd =\n Array.from(fontColor)\n .map(c => (c / 255).toFixed(2))\n .join(\" \") + \" rg\";\n }\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (let i = 0, ii = value.length; i < ii; i++) {\n const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(value instanceof Name)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\nfunction incrementCachedImageMaskCount(data) {\n if (\n data.fn === OPS.paintImageMaskXObject &&\n data.args[0] &&\n data.args[0].count > 0\n ) {\n data.args[0].count++;\n }\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n for (const ref of processed) {\n nonBlendModesSet.put(ref);\n }\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeatedly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n const msg = \"Image exceeded maximum allowed size and was removed.\";\n\n if (this.options.ignoreErrors) {\n warn(msg);\n return;\n }\n throw new Error(msg);\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const interpolate = dict.get(\"I\", \"Interpolate\");\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(bitStrideLength * h);\n const decode = dict.getArray(\"D\", \"Decode\");\n\n if (this.parsingType3Font) {\n imgData = PDFImage.createRawMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addImageOps(\n OPS.paintImageMaskXObject,\n args,\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent,\n });\n }\n return;\n }\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n\n if (imgData.isSingleOpaquePixel) {\n // Handles special case of mainly LaTeX documents which use image\n // masks to draw lines with the current fill style.\n operatorList.addImageOps(\n OPS.paintSolidColorImageMask,\n [],\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintSolidColorImageMask,\n args: [],\n optionalContent,\n });\n }\n return;\n }\n\n const objId = `mask_${this.idFactory.createObjId()}`;\n operatorList.addDependency(objId);\n this._sendImgData(objId, imgData);\n\n args = [\n {\n data: objId,\n width: imgData.width,\n height: imgData.height,\n interpolate: imgData.interpolate,\n count: 1,\n },\n ];\n operatorList.addImageOps(\n OPS.paintImageMaskXObject,\n args,\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent,\n });\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addImageOps(\n OPS.paintInlineImageXObject,\n [imgData],\n optionalContent\n );\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n const gStateKeys = gState.getKeys();\n let promise = Promise.resolve();\n for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n const key = gStateKeys[i];\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (!(font instanceof Ref)) {\n throw new FormatError('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!(font instanceof Dict)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && descriptor instanceof Dict) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n if (translatedFont.fontType !== undefined) {\n xref.stats.addFontType(translatedFont.fontType);\n }\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n try {\n // error, but it's still nice to have font type reported\n const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n const fontType = getFontType(\n preEvaluatedFont.type,\n subtype && subtype.name\n );\n if (fontType !== undefined) {\n xref.stats.addFontType(fontType);\n }\n } catch (ex) {}\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n let minMax;\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n minMax = [Infinity, -Infinity, Infinity, -Infinity];\n operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n minMax = opArgs[2];\n }\n\n // Compute min/max in the worker instead of the main thread.\n // If the current matrix (when drawing) is a scaling one\n // then min/max can be easily computed in using those values.\n // Only rectangle, lineTo and moveTo are handled here since\n // Bezier stuff requires to have the starting point.\n switch (fn) {\n case OPS.rectangle:\n minMax[0] = Math.min(minMax[0], args[0], args[0] + args[2]);\n minMax[1] = Math.max(minMax[1], args[0], args[0] + args[2]);\n minMax[2] = Math.min(minMax[2], args[1], args[1] + args[3]);\n minMax[3] = Math.max(minMax[3], args[1], args[1] + args[3]);\n break;\n case OPS.moveTo:\n case OPS.lineTo:\n minMax[0] = Math.min(minMax[0], args[0]);\n minMax[1] = Math.max(minMax[1], args[0]);\n minMax[2] = Math.min(minMax[2], args[1]);\n minMax[3] = Math.max(minMax[3], args[1]);\n break;\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n optionalContentGroups instanceof Dict\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy:\n optionalContent.get(\"P\") instanceof Name\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addImageOps(\n globalImage.fn,\n globalImage.args,\n globalImage.optionalContent\n );\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n const arrItem = arr[i];\n if (typeof arrItem === \"string\") {\n Array.prototype.push.apply(\n combinedGlyphs,\n self.handleText(arrItem, state)\n );\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n const NormalizedUnicodes = getNormalizedUnicodes();\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n notASpace: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Use a circular buffer (length === 2) to save the last chars in the\n // text stream.\n // This implementation of the circular buffer is using a fixed array\n // and the position of the next element:\n // function addElement(x) {\n // buffer[pos] = x;\n // pos = (pos + 1) % buffer.length;\n // }\n // It's a way faster than:\n // function addElement(x) {\n // buffer.push(x);\n // buffer.shift();\n // }\n //\n // It's useful to know when we need to add a whitespace in the\n // text chunk.\n const twoLastChars = [\" \", \" \"];\n let twoLastCharsPos = 0;\n\n /**\n * Save the last char.\n * @param {string} char\n * @returns {boolean} true when the two last chars before adding the new one\n * are a non-whitespace followed by a whitespace.\n */\n function saveLastChar(char) {\n const nextPos = (twoLastCharsPos + 1) % 2;\n const ret =\n twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n twoLastChars[twoLastCharsPos] = char;\n twoLastCharsPos = nextPos;\n\n return ret;\n }\n\n function resetLastChars() {\n twoLastChars[0] = twoLastChars[1] = \" \";\n twoLastCharsPos = 0;\n }\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // When a white <= fontSize * NOT_A_SPACE_FACTOR, there is no space\n // even if one is present in the text stream.\n const NOT_A_SPACE_FACTOR = 0.03;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const font = textState.font,\n loadedName = font.loadedName;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [\n (matrix[0] * x + matrix[1] * y) / scale,\n (matrix[2] * x + matrix[3] * y) / scale,\n ];\n }\n\n function compareWithLastPosition() {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n\n const shiftedX = posX - viewBox[0];\n const shiftedY = posY - viewBox[1];\n\n if (\n shiftedX < 0 ||\n shiftedX > viewBox[2] ||\n shiftedY < 0 ||\n shiftedY > viewBox[3]\n ) {\n return false;\n }\n\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return true;\n }\n\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n\n let rotate = -1;\n // Take into account the rotation is the current transform.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n // This is not a 0, 90, 180, 270 rotation so:\n // - remove the scale factor from the matrix to get a rotation matrix\n // - apply the inverse (which is the transposed) to the positions\n // and we can then compare positions of the glyphes to detect\n // a whitespace.\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(\n lastPosX,\n lastPosY,\n textContentItem.prevTransform\n );\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n\n // When the total height of the current chunk is negative\n // then we're writing from bottom to top.\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return true;\n }\n\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n\n if (advanceY <= textOrientation * textContentItem.notASpace) {\n // The real spacing between 2 consecutive chars is thin enough to be\n // considered a non-space.\n resetLastChars();\n }\n\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (\n !addFakeSpaces(\n advanceY,\n textContentItem.prevTransform,\n textOrientation\n )\n ) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: Math.abs(advanceY),\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return true;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n\n // When the total width of the current chunk is negative\n // then we're writing from right to left.\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return true;\n }\n\n // We're moving back so in case the last char was a whitespace\n // we cancel it: it doesn't make sense to insert it.\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n\n if (advanceX <= textOrientation * textContentItem.notASpace) {\n // The real spacing between 2 consecutive chars is thin enough to be\n // considered a non-space.\n resetLastChars();\n }\n\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (\n !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n ) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: Math.abs(advanceX),\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n\n return true;\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n if (glyph.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n if (glyph.isWhitespace) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n saveLastChar(\" \");\n continue;\n }\n\n if (!compareWithLastPosition()) {\n // The glyph is not in page so just skip it.\n continue;\n }\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (glyph.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n let glyphUnicode = glyph.unicode;\n glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n glyphUnicode = reverseIfRtl(glyphUnicode);\n if (saveLastChar(glyphUnicode)) {\n // The two last chars are a non-whitespace followed by a whitespace\n // and then this non-whitespace, so we insert a whitespace here.\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n textChunk.str.push(\" \");\n }\n textChunk.str.push(glyphUnicode);\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n resetLastChars();\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.font.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf, textOrientation) {\n if (\n textOrientation * textContentItem.spaceInFlowMin <= width &&\n width <= textOrientation * textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n resetLastChars();\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n resetLastChars();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements[elements.length - 1];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n if (includeMarkedContent) {\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n if (includeMarkedContent) {\n flushTextContentItem();\n let mcid = null;\n if (args[1] instanceof Dict) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n if (includeMarkedContent) {\n flushTextContentItem();\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName =\n baseEncodingName instanceof Name ? baseEncodingName.name : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n const data = xref.fetchIfRef(diffEncoding[j]);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n const msg = \"Encoding is not a Name nor a Dict\";\n\n if (!this.options.ignoreErrors) {\n throw new FormatError(msg);\n }\n warn(msg);\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === \"\") {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (\n Number.isNaN(code) &&\n Number.isInteger(parseInt(codeStr, 16))\n ) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n default: // 'uniXXXX'/'uXXXX{XX}' glyphs\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n continue;\n }\n toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (cmapObj instanceof Name) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (cmapObj instanceof BaseStream) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint.apply(String, str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() ||\n fontNameWoStyle.search(/serif/gi) !== -1\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (\n typeof diffEntry === \"number\" ||\n diffEntry instanceof Ref\n ) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (let i = 0, ii = widths.length; i < ii; i++) {\n glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n // Error in the font data -- sending unsupported feature notification\n // and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n // Prevent circular references in Type3 fonts.\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n type3FontRefs.put(this.dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const isEmptyBBox =\n !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, isEmptyBBox);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n if (isEmptyBBox) {\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n let i = 1,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n fn >= OPS.moveTo &&\n fn <= OPS.endPath && // Path operator\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(\n \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n );\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n StreamType,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n const bytesLength = bytes.length;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n bytesLength < MAX_ADLER32_LENGTH,\n 'computeAdler32: Unsupported \"bytes\" length.'\n );\n }\n let a = 1,\n b = 0;\n for (let i = 0; i < bytesLength; ++i) {\n // No modulo required in the loop if `bytesLength < 5552`.\n a += bytes[i] & 0xff;\n b += a;\n }\n return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default: // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary.\n const dict = new Dict(this.xref);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n const imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the *entire* dictionary.\n const dictBytes = stream.getBytes(dictLength);\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n const xrefStats = this.xref.stats;\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n xrefStats.addStreamType(StreamType.FLATE);\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n xrefStats.addStreamType(StreamType.LZW);\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n xrefStats.addStreamType(StreamType.DCT);\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n xrefStats.addStreamType(StreamType.JPX);\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n xrefStats.addStreamType(StreamType.A85);\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n xrefStats.addStreamType(StreamType.AHX);\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n xrefStats.addStreamType(StreamType.CCF);\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n xrefStats.addStreamType(StreamType.RLX);\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n xrefStats.addStreamType(StreamType.JBIG);\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf).\n if (divideBy === 10 && sign === 0) {\n warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n return 0;\n }\n // This is consistent with Adobe Reader (fixes bug1753983.pdf).\n if (divideBy === 0 && sign === -1) {\n warn(\"Lexer.getNumber - treating a single minus sign as zero.\");\n return 0;\n }\n }\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n );\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n linDict instanceof Dict &&\n typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n return this.buffer.subarray(pos, end);\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n if (sign === 0) {\n return value;\n } else if (value > 0) {\n return -value;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type})` +\n \" is not implemented\"\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n buffer.fill(0xff);\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n let inputSymbols = [];\n for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n const referredSymbols = symbols[referredSegments[i]];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols = inputSymbols.concat(referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion.apply(this, arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one order of magnitude smaller than expected (fixes\n // issue10880.pdf and issue10989.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 10\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (let i = 0, ii = frame.components.length; i < ii; i++) {\n const component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const dataLength = data.length;\n const rgbData = new Uint8ClampedArray(dataLength * 3);\n let offset = 0;\n for (let i = 0; i < dataLength; i++) {\n const grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n\n if (resetContextProbabilities) {\n bitModel.reset();\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const resetContextProbabilities =\n codingStyleParameters.resetContextProbabilities;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n ]);\n const HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n ]);\n const HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!(params instanceof Dict)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n info,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n getFontType,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n getCharUnicodeCategory,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"fontType\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n } else if (properties.hasEncoding) {\n if (\n properties.differences.length === 0 ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n\n const category = getCharUnicodeCategory(unicode);\n this.isWhitespace = category.isWhitespace;\n this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n }\n\n matchesForCache(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n return (\n this.originalCharCode === originalCharCode &&\n this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont\n );\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n const newMap = Object.create(null);\n const toFontChar = [];\n let privateUseAreaIndex = 0;\n let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n const ranges = getRanges(glyphs, numGlyphs);\n const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let type = properties.type;\n let subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n let fallbackName = \"sans-serif\";\n if (this.isMonospace) {\n fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n fallbackName = \"serif\";\n }\n this.fallbackName = fallbackName;\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const name = this.name;\n const type = this.type;\n const subtype = this.subtype;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n\n this.bold = fontName.search(/bold/gi) !== -1;\n this.italic =\n fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = name.search(/Black/g) !== -1;\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = name.search(/Narrow/g) !== -1;\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Verdana/i.test(name)) {\n // Fixes issue11242_reduced.pdf\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n this.fontType = getFontType(type, subtype, properties.isStandardFont);\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const nameTable = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start ? file.start : 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n file.skip(2 + 2); // length + language\n\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n file.skip(2 + 2); // length + language\n\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n file.skip(2 + 2); // length + language\n\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n file.skip(2 + 2); // length + language\n\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else if (format === 12) {\n file.skip(2 + 4 + 4); // reserved + length + language\n\n const nGroups = file.getInt32() >>> 0;\n for (j = 0; j < nGroups; j++) {\n const startCharCode = file.getInt32() >>> 0;\n const endCharCode = file.getInt32() >>> 0;\n let glyphCode = file.getInt32() >>> 0;\n\n for (\n let charCode = startCharCode;\n charCode <= endCharCode;\n charCode++\n ) {\n mappings.push({\n charCode,\n glyphId: glyphCode++,\n });\n }\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start ? file.start : 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n // Calculate the endOffset of the \"first\" glyph correctly when there are\n // *multiple* empty ones at the start of the data (fixes issue14618.pdf).\n for (i = 0; i < numGlyphs; i++) {\n const { offset, endOffset } = locaEntries[i];\n if (offset !== 0 || endOffset !== 0) {\n break;\n }\n const nextOffset = locaEntries[i + 1].offset;\n if (nextOffset === 0) {\n continue;\n }\n locaEntries[i].endOffset = nextOffset;\n break;\n }\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const records = [];\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (\n (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n ) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return names;\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack[stack.length - 1];\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n const cmapMappingsLength = cmapMappings.length;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (let i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (let i = 0; i < cmapMappingsLength; ++i) {\n let charCode = cmapMappings[i].charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const namePrototype = readNameTable(tables.name);\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (let i = 0, ii = charCodes.length; i < ii; i++) {\n const charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n const glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n let glyph = this._glyphCache[charcode];\n if (\n !glyph ||\n !glyph.matchesForCache(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n )\n ) {\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n this._glyphCache[charcode] = glyph;\n }\n return glyph;\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 charstrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n const CharstringValidationData = [\n null,\n { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n null,\n { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n { id: \"vmoveto\", min: 1, stackClearing: true },\n { id: \"rlineto\", min: 2, resetStack: true },\n { id: \"hlineto\", min: 1, resetStack: true },\n { id: \"vlineto\", min: 1, resetStack: true },\n { id: \"rrcurveto\", min: 6, resetStack: true },\n null,\n { id: \"callsubr\", min: 1, undefStack: true },\n { id: \"return\", min: 0, undefStack: true },\n null, // 12\n null,\n { id: \"endchar\", min: 0, stackClearing: true },\n null,\n null,\n null,\n { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"hintmask\", min: 0, stackClearing: true },\n { id: \"cntrmask\", min: 0, stackClearing: true },\n { id: \"rmoveto\", min: 2, stackClearing: true },\n { id: \"hmoveto\", min: 1, stackClearing: true },\n { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n { id: \"rcurveline\", min: 8, resetStack: true },\n { id: \"rlinecurve\", min: 8, resetStack: true },\n { id: \"vvcurveto\", min: 4, resetStack: true },\n { id: \"hhcurveto\", min: 4, resetStack: true },\n null, // shortint\n { id: \"callgsubr\", min: 1, undefStack: true },\n { id: \"vhcurveto\", min: 4, resetStack: true },\n { id: \"hvcurveto\", min: 4, resetStack: true },\n ];\n const CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n ];\n\n // eslint-disable-next-line no-shadow\n class CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (let i = 0, ii = dict.length; i < ii; ++i) {\n const pair = dict[i];\n const key = pair[0];\n const value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n const length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(\n CFFPrivateDict,\n [],\n parentDict.strings\n );\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n }\n return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n const valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (let i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (let i = 0, ii = layout.length; i < ii; ++i) {\n const entry = layout[i];\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n const layout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFTopDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.privateDict = null;\n }\n }\n return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n const layout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n ];\n let tables = null;\n\n // eslint-disable-next-line no-shadow\n class CFFPrivateDict extends CFFDict {\n constructor(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n super(tables, strings);\n this.subrsIndex = null;\n }\n }\n return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n const subDict = cff.fdArray[i];\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (let i = 0, ii = names.length; i < ii; ++i) {\n const name = names[i];\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n let out = [];\n // The dictionary keys must be in a certain order.\n const order = dict.order;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out = out.concat(this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case \"array\":\n case \"delta\":\n out = out.concat(this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (let i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (let j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[6] = 193;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[260] = 225;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[383] = 243;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = properties.cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\nfunction getUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUint16(data, start + 2) === 1\n ? getUint32(data, start + 8)\n : getUint32(data, start + 16);\n const format = getUint16(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUint16(data, start + offset + 2); // length\n const segCount = getUint16(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUint16(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUint16(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUint16(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = getUint32(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = getUint32(data, p);\n ranges.push({\n start,\n end: getUint32(data, p + 4),\n idDelta: getUint32(data, p + 8) - start,\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = getUint32;\n } else {\n itemSize = 2;\n itemDecode = (data, offset) => 2 * getUint16(data, offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = getInt16(code, i);\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = getUint16(code, i);\n const glyphIndex = getUint16(code, i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = getInt16(code, i);\n arg2 = getInt16(code, i + 2);\n } else {\n arg1 = getUint16(code, i);\n arg2 = getUint16(code, i + 2);\n }\n i += 4;\n } else {\n if (flags & 0x02) {\n arg1 = getInt8(code, i++);\n arg2 = getInt8(code, i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(code, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(code, i);\n scaleY = getFloat214(code, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(code, i);\n scale01 = getFloat214(code, i + 2);\n scale10 = getFloat214(code, i + 4);\n scaleY = getFloat214(code, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n // TODO: the transform should be applied only if there is a scale:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n\n if (!(flags & 0x02)) {\n // TODO: we must use arg1 and arg2 to make something similar to:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n }\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(getUint16(code, i));\n i += 2;\n }\n const instructionLength = getUint16(code, i);\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += getInt16(code, i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += getInt16(code, i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour[contour.length - 1].flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUint16(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getUint32(data, p + 8);\n const length = getUint32(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUint16(data, offset + 18);\n indexToLocFormat = getUint16(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426,\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439,\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450,\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461,\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441,\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462,\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n const charstrings = this.charstrings;\n for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n const COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n };\n\n // eslint-disable-next-line no-shadow\n class Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(\n subrs[subrNumber],\n subrs,\n seacAnalysisEnabled\n );\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack[this.stack.length - 5];\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n }\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n const EEXEC_ENCRYPT_KEY = 55665;\n const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n }\n\n function isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n }\n\n // eslint-disable-next-line no-shadow\n class Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n prevChar() {\n this.stream.skip(-2);\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n } else if (token === \"/\") {\n // The expected 'ND' or '|-' token is missing, avoid swallowing\n // the start of the next glyph (fixes issue14462_reduced.pdf).\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n case \"ExpansionFactor\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (let i = 0; i < charstrings.length; i++) {\n const glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n }\n\n return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n FeatureTest,\n FormatError,\n info,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (let j = 0, jj = fnObj.length; j < jj; j++) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fnRefs = dict.get(\"Functions\");\n const fns = [];\n for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n );\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && FeatureTest.isEvalSupported) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = !initialStack\n ? []\n : Array.prototype.slice.call(initialStack, 0);\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (typeof a === \"boolean\") {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n class AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n }\n\n class AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n }\n\n class AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n }\n\n class AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n }\n\n class AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n }\n\n class AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n }\n\n class AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n }\n\n class ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n }\n\n function buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n // eslint-disable-next-line no-shadow\n class PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(\n stack,\n stack.splice(stack.length - n, n - j)\n );\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n }\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n for (const imageData of this._imageCache) {\n byteSize += imageData.byteSize;\n }\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern[pattern.length - 1]] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n interpolate: maskParams.interpolate,\n count: maskParams.count,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addImageOps(fn, args, optionalContent) {\n if (optionalContent !== undefined) {\n this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n this.addOp(fn, args);\n\n if (optionalContent !== undefined) {\n this.addOp(OPS.endMarkedContent, []);\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n if (\n !arg.cached &&\n arg.data &&\n arg.data.buffer instanceof ArrayBuffer\n ) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FeatureTest,\n FormatError,\n ImageKind,\n info,\n warn,\n} from \"../shared/util.js\";\nimport { applyMaskImageData } from \"../shared/image_utils.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n if (filter instanceof Name) {\n switch (filter.name) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n }\n // TODO cache rendered images?\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n if (smask instanceof BaseStream) {\n smaskData = smask;\n } else {\n warn(\"Unsupported /SMask format.\");\n }\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported /Mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createRawMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n data.fill(0xff, actualLength);\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n const isSingleOpaquePixel =\n width === 1 &&\n height === 1 &&\n inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n\n if (isSingleOpaquePixel) {\n return { isSingleOpaquePixel };\n }\n\n if (FeatureTest.isOffscreenCanvasSupported) {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n const imgData = ctx.createImageData(width, height);\n applyMaskImageData({\n src: imgArray,\n dest: imgData.data,\n width,\n height,\n inverseDecode,\n });\n\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n\n return {\n data: null,\n width,\n height,\n interpolate,\n bitmap,\n };\n }\n\n // Get the data almost as they're and they'll be decoded\n // just before being drawn.\n return this.createRawMask({\n imgArray,\n width,\n height,\n inverseDecode,\n imageIsFromDecodeStream,\n interpolate,\n });\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n imgData.data = this.getImageBytes(originalHeight * rowBytes, {});\n\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGB: true,\n });\n return imgData;\n }\n }\n }\n\n const imgArray = this.getImageBytes(originalHeight * rowBytes, {\n internal: true,\n });\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes, { internal: true });\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(\n length,\n { drawWidth, drawHeight, forceRGB = false, internal = false }\n ) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n const imageBytes = this.image.getBytes(length);\n\n // If imageBytes came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (internal || this.image instanceof DecodeStream) {\n return imageBytes;\n }\n assert(\n imageBytes instanceof Uint8Array,\n 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.'\n );\n return new Uint8Array(imageBytes);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest } from \"./util.js\";\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false,\n}) {\n const opaque = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n\n return { srcPos, destPos };\n}\n\nexport { applyMaskImageData };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n collectActions,\n MissingDataException,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n return shadow(\n this,\n \"version\",\n version instanceof Name ? version.name : null\n );\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n\n const markInfo = {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n };\n for (const key in markInfo) {\n const value = obj.get(key);\n if (typeof value === \"boolean\") {\n markInfo[key] = value;\n }\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name:\n typeof group.get(\"Name\") === \"string\"\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent:\n typeof group.get(\"Intent\") === \"string\"\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(value instanceof Ref)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (value instanceof Ref && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name:\n typeof config.get(\"Name\") === \"string\"\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator:\n typeof config.get(\"Creator\") === \"string\"\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState:\n config.get(\"BaseState\") instanceof Name\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[stringToPDFString(key)] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const obj = this._catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n\n for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\n\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n // The number of elements must be even.\n if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (obj instanceof Dict) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(stringToPDFString(key), value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n javaScript.set(name, stringToPDFString(js));\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(stringToPDFString(key), value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n async fontFallback(id, handler) {\n const translatedFonts = await Promise.all(this.fontCache);\n\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n }\n\n async cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const translatedFonts = await Promise.all(this.fontCache);\n\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n }\n\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache;\n let currentPageIndex = 0;\n\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n\n const obj = await xref.fetchAsync(currentNode);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n // Help improve performance of the `getPageIndex` method.\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n );\n }\n const { objId } = currentNode;\n\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Promise<Map>}\n */\n async getAllPageDicts(recoveryMode = false) {\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n // Help improve performance of the `getPageIndex` method.\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue[queue.length - 1];\n const { currentNode, posInKids } = queueItem;\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (let i = 0, ii = kids.length; i < ii; i++) {\n const kid = kids[i];\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n get baseUrl() {\n const uri = this._catDict.get(\"URI\");\n if (uri instanceof Dict) {\n const base = uri.get(\"Base\");\n if (typeof base === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(base, null, {\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n return shadow(this, \"baseUrl\", absoluteUrl.href);\n }\n }\n }\n return shadow(this, \"baseUrl\", null);\n }\n\n /**\n * @typedef {Object} ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (remoteDest instanceof Name) {\n remoteDest = remoteDest.name;\n }\n if (typeof url === \"string\") {\n const baseUrl = url.split(\"#\")[0];\n if (typeof remoteDest === \"string\") {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n resultObj.dest = stringToPDFString(dest);\n } else if (Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n if (!Array.isArray(kids)) {\n continue;\n }\n for (const kid of kids) {\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = kid;\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n clearPrimitiveCaches();\n clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj instanceof BaseStream) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n get children() {\n return this.childNodes || [];\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n if (!lastElement) {\n return null;\n }\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n return lastElement;\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!(value instanceof Name)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (kid instanceof Ref) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (kid instanceof Dict) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n\n const type =\n kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId:\n kidDict.getRaw(\"Stm\") instanceof Ref\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId:\n kidDict.getRaw(\"Obj\") instanceof Ref\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (obj instanceof Dict) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplified object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n value instanceof BaseStream ||\n Array.isArray(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n const rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n if (Array.isArray(value)) {\n node.childNodes = value.map(val => new SimpleDOMNode(\"value\", val));\n } else {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n }\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n}) {\n if (xref === null) {\n return;\n }\n\n if (!hasXfaDatasetsEntry) {\n if (!acroFormRef) {\n warn(\"XFA - Cannot save it\");\n return;\n }\n\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const oldXfa = acroForm.get(\"XFA\");\n const newXfa = oldXfa.slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n acroForm.set(\"XFA\", newXfa);\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(\n acroFormRef.num,\n acroFormRef.gen\n );\n }\n\n const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n writeDict(acroForm, buffer, transform);\n buffer.push(\"\\n\");\n\n acroForm.set(\"XFA\", oldXfa);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n }\n\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n acroFormRef,\n acroForm,\n newRefs,\n xref,\n xrefInfo,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData[originalData.length - 1];\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result[result.length - 1];\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n let remainder = 0;\n for (let z = 0; z < 16; z++) {\n remainder *= 256 % 3;\n remainder %= 3;\n remainder += (e[z] >>> 0) % 3;\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n let bufferLength = this.bufferLength;\n const n = chunk.length,\n buffer = this.ensureBuffer(bufferLength + n);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursively to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed[parsed.length - 1].index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // JavaScript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.reduce((acc, node) => acc.concat(node), []);\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges[edges.length - 1] || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles[cornerStyles.length - 1];\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n };\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge ? this.edge : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.findIndex(e => e === target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.findIndex(\n e => e === target\n );\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n },\n };\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack[this.stack.length - 1];\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack[this.stack.length - 1];\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack[stack.length - 1];\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a &nbsp is unbreakable\n // but in real life Acrobat can break strings on &nbsp.\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack[prefixStack.length - 1];\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings[siblings.length - 1] === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToUTF8String, warn } from \"../shared/util.js\";\nimport { parseXFAPath } from \"./core_utils.js\";\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nfunction decodeString(str) {\n try {\n return stringToUTF8String(str);\n } catch (ex) {\n warn(`UTF-8 decoding failed: \"${ex}\".`);\n return str;\n }\n}\n\nclass DatasetXMLParser extends SimpleXMLParser {\n constructor(options) {\n super(options);\n this.node = null;\n }\n\n onEndElement(name) {\n const node = super.onEndElement(name);\n if (node && name === \"xfa:datasets\") {\n this.node = node;\n\n // We don't need anything else, so just kill the parser.\n throw new Error(\"Aborting DatasetXMLParser.\");\n }\n }\n}\n\nclass DatasetReader {\n constructor(data) {\n if (data.datasets) {\n this.node = new SimpleXMLParser({ hasAttributes: true }).parseFromString(\n data.datasets\n ).documentElement;\n } else {\n const parser = new DatasetXMLParser({ hasAttributes: true });\n try {\n parser.parseFromString(data[\"xdp:xdp\"]);\n } catch (_) {}\n this.node = parser.node;\n }\n }\n\n getValue(path) {\n if (!this.node || !path) {\n return \"\";\n }\n const node = this.node.searchNode(parseXFAPath(path), 0);\n\n if (!node) {\n return \"\";\n }\n\n const first = node.firstChild;\n if (first && first.nodeName === \"value\") {\n return node.children.map(child => decodeString(child.textContent));\n }\n\n return decodeString(node.textContent);\n }\n}\n\nexport { DatasetReader };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n DocStats,\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this.stats = new DocStats(pdfManager.msgHandler);\n this._newRefNum = null;\n }\n\n getNewRef() {\n if (this._newRefNum === null) {\n this._newRefNum = this.entries.length;\n }\n return Ref.get(this._newRefNum++, 0);\n }\n\n resetNewRef() {\n this._newRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n const endobjRegExp = /\\bendobj[\\b\\s]$/;\n const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n const CHECK_CONTENT_LENGTH = 25;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const objBytes = new Uint8Array([111, 98, 106]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n let contentLength,\n startPos = position + token.length,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n while (startPos < buffer.length) {\n const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n contentLength = endPos - position;\n\n const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n // Check if the current object ends with an 'endobj' operator.\n if (endobjRegExp.test(tokenStr)) {\n break;\n } else {\n // Check if an \"obj\" occurrence is actually a new object,\n // i.e. the current object is missing the 'endobj' operator.\n const objToken = nestedObjRegExp.exec(tokenStr);\n\n if (objToken && objToken[1]) {\n warn(\n 'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= objToken[1].length;\n break;\n }\n }\n startPos = endPos;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n let trailerDict;\n for (let i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (!Number.isInteger(pagesCount)) {\n continue;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has(\"ID\")) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n try {\n while (this.startXRefQueue.length) {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n\n this.startXRefQueue.shift();\n }\n\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","finished","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","setup","handler","port","testMessageProcessed","on","wphSetupTest","data","send","Uint8Array","wphConfigure","setVerbosityLevel","verbosity","wphSetupDoc","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","docId","docBaseUrl","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","catch","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","evaluatorOptions","enableXfa","pdfManagerCapability","newPdfManager","source","LocalPdfManager","password","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","disableAutoFetch","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","rangeChunkSize","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","onLoadedStream","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","AbortException","stream","bytes","byteLength","wphSetupGetPage","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","wphSetupGetPageIndex","pageRef","Ref","get","num","gen","ensureCatalog","wphSetupGetDestinations","wphSetupGetDestination","id","wphSetupGetPageLabels","wphSetupGetPageLayout","wphSetupGetPageMode","wphSetupGetAttachments","wphSetupGetJavaScript","wphSetupGetDocJSActions","wphSetupGetOutline","wphSetupGetMetadata","wphSetupGetMarkInfo","wphSetupGetData","intent","getAnnotationsData","annotationStorage","filename","promises","serializeXfaData","save","finally","acroForm","acroFormRef","xref","startXRef","newRefs","xfaData","refs","filter","x","reduce","a","b","concat","xfa","Dict","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","resetNewRef","incrementalUpdate","originalData","hasXfa","wphSetupRenderPage","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","featureId","UNSUPPORTED_FEATURES","errorOperatorList","error","wphExtractText","extractTextContent","includeMarkedContent","combineTextItems","wphGetStructTree","fontFallback","wphCleanup","cleanup","wphTerminate","waitOn","cleanupPromise","clearGlobalCaches","destroy","wphReady","initializeFromPort","isMessagePort","maybePort","postMessage","window","self","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","shadow","obj","prop","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","prototype","details","status","FormatError","bytesToString","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","chunk","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","hexNumbers","n","padStart","Util","makeHexColor","r","g","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","process","versions","nw","electron","type","CIRCULAR_REF","Symbol","EOF","Name","NameClosure","nameCache","nameValue","_clearCache","Cmd","CmdClosure","cmdCache","cmd","cmdValue","nonSerializable","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","fetch","getAsync","fetchAsync","getArray","getKeys","getRawValues","values","has","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","Map","dict","entries","subDict","clear","RefClosure","refCache","refValue","RefSet","parent","_set","Set","put","add","remove","delete","iterator","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","isRefsEqual","v1","v2","clearPrimitiveCaches","parseDocBaseUrl","href","BasePdfManager","_docId","_password","catalog","pdfDocument","_docBaseUrl","args","ensureXRef","manuallyTriggered","requestRange","begin","end","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","MissingDataException","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","ceil","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","isDataLoaded","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","getByte","getBytes","strEnd","getByteRange","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","getBaseStreams","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","bind","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","includes","sort","groupedChunks","prevChunk","isProgressive","loadedRequests","lastChunk","onError","err","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","ParserEOFException","XRefEntryException","DocStats","_handler","_streamTypes","_fontTypes","_send","streamTypes","fontTypes","addStreamType","addFontType","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","parseInt","escapePDFName","substring","_collectJS","entry","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","ident","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","newWindow","isEmpty","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","skip","reset","moveStart","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","createObjId","getPageObjId","_getInheritableProperty","content","resources","_getBoundingBox","bbox","box","mediaBox","cropBox","_onSubStreamError","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","_parsedAnnotations","annotations","newRefsPromises","annotation","mustBePrinted","loadResources","objectLoader","ObjectLoader","load","contentStreamPromise","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","flush","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","opLists","addOp","addOpList","getTextContent","viewBox","getStructTree","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","annotationsData","viewable","printable","annots","parsedAnnotations","annotationPromises","annotationRef","AnnotationFactory","jsActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","XRef","_pagePromises","_version","_globalIdFactory","getDocId","createFontId","Catalog","version","linearization","Linearization","step","startXRefLength","found","checkHeader","MAX_PDF_VERSION_LENGTH","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","every","field","fetchIfRef","isSignature","isInvisible","_xfaStreams","template","datasets","config","connectionSet","localeSet","stylesheet","hasOwnProperty","xfaDatasets","streams","DatasetReader","_","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","fontRes","assign","pdfFonts","initialState","clone","fonts","fontName","descriptor","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","encrypt","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","_getLinearizationPage","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","checkFirstPage","checkLastPage","setActualNumPages","pagesTree","getAllPageDicts","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","some","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","metrics","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","ArialMT","Arial","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","Helvetica","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","normalizeFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","w","currentCode","currentArray","newWidths","unicode","glyphIndex","charUnicode","index","unicode1","unicode2","widths","systemInfo","lineHeight","lineGap","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","getFontType","subtype","isStandardFont","recoverGlyphName","glyphsUnicodeMap","getUnicodeForGlyph","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","charCode","baseEncoding","isSymbolicFont","flags","isInternalFont","baseEncodingName","getEncoding","StandardEncoding","differences","glyphName","getGlyphsUnicode","standardGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","encodingName","getDingbatsGlyphsUnicode","getSpecialPUASymbols","mapSpecialUnicodeValues","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","LINE_FACTOR","collectFields","_getPageIndex","_create","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","getRgbColor","color","defaultColor","Uint8ClampedArray","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getQuadPoints","quadPoints","quadPointsLists","jj","y","quadPointsList","minX","maxX","minY","maxY","mX","MX","mY","MY","quadPoint","MAX_VALUE","MIN_VALUE","getTransformMatrix","matrix","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setBorderAndBackgroundColors","_streams","appearance","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_fallbackFontDict","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","title","_title","contents","hasFlag","setLineEndings","lineEndings","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","array","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","evaluator","isUsingOwnCanvas","appearanceDict","fallbackFontDict","strokeColor","fillColor","unshift","loopDict","width","style","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","pointsArray","points","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","annotationType","fieldValue","_decodeFormValue","defaultFieldValue","_hasValueFromXFA","getValue","alternativeText","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","_hasText","_getAppearance","AP","originalTransform","newTransform","createCipherTransform","encryptString","encoder","val","_getSaveFieldResources","bufferOriginal","writeDict","bufferNew","isPassword","formattedValue","trim","lineCount","multiLine","defaultPadding","hPadding","totalHeight","totalWidth","_getFontData","fontSize","_computeFontSize","descent","vPadding","alignment","textAlignment","_getMultilineAppearance","encodedString","encodeString","comb","_getCombAppearance","renderedText","_renderText","_getTextWidth","text","charsToGlyphs","glyph","height","roundWithTwoDigits","textWidth","lines","cachedLines","line","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","numberOfLines","round","fontColor","createDefaultAppearance","shift","toFixed","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","combWidth","renderedComb","padding","scale","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","exportValue","buttonValue","savedAppearance","_saveCheckbox","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","option","isOptionArray","displayValue","combo","multiSelect","numItems","multipleSelection","items","exportedValue","valueIndices","lineWidth","numberOfVisibleLines","firstIndex","valuePosition","indexInPage","hpadding","vpadding","DEFAULT_ICON_SIZE","state","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","lineCoordinates","from","interiorColor","borderWidth","borderAdjust","controlPointsDistance","tan","xMid","yMid","xOffset","yOffset","vertices","rawVertices","Infinity","vertex","inkLists","rawInkLists","inkList","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","EvaluatorPreprocessor","operation","fn","result","savedStatesDepth","colorCmd","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","_cache","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","pdfFunctionFactory","_parse","cachedColorSpace","PatternCS","colorSpaces","resourcesCS","mode","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","base","tmpBuf","Float32Array","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","k","CalGrayCSClosure","A","AG","G","L","YW","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","Y","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","M","N","DefaultPartialEvaluatorOptions","freeze","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","incrementCachedImageMaskCount","TimeSlotManager","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","checked","endTime","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","_pdfFunctionFactory","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","ok","statusText","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","getFontNameToFileMap","buildFormXObject","xobj","optionalContent","groupOptions","parseMarkedContentProps","group","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","bitmap","buildPaintImageXObject","image","isInline","localImageCache","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createRawMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","addImageOps","createMask","isSingleOpaquePixel","addDependency","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","createImageData","shouldCache","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","dependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","gStateKeys","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translateFont","translatedFont","fontType","stats","fontFile3","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","pop","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","argument","promiseBody","next","ready","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","combinedGlyphs","arrLength","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","seenStyles","TextState","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","notASpace","hasEOL","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","ret","resetLastChars","TRACKING_SPACE_FACTOR","NOT_A_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","vmetric","scaledDim","wordSpacing","glyphUnicode","transf","enqueueChunk","batch","enqueue","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","tag","mcid","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","toUnicode","composite","cidSystemInfo","registry","ordering","supplement","cidToGidMap","diffEncoding","defaultEncoding","isNonsymbolicFont","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","codeStr","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","ucs2CMap","CMapFactory","useCMap","cid","ucs2","IdentityToUnicodeMap","firstChar","lastChar","cmapObj","cmap","getMap","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getSerifFonts","search","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","Font","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","glyphScaleFactors","subtypeEntry","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","sent","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","gStateKey","stateStack","old","prev","f","opMap","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","l","re","S","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","MAX_INVALID_PATH_OPS","parser","Parser","lexer","Lexer","nonProcessedArgs","_numInvalidPathOPS","getObj","opSpec","argsLength","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","isIdentityCMap","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","readString","len","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","computeAdler32","bytesLength","allowStreams","imageCache","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictLength","beginInlineImagePos","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheEntry","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","xrefStats","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","input","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","contextCache","decodeInteger","procedure","contexts","readBits","bit","readBit","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","numberOfPages","currentPageInfo","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustToUnicode","amend","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","matchesForCache","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","proto","strings","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","extraProperties","exportDataProperties","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","post","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","nGroups","startCharCode","endCharCode","glyphCode","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","nextOffset","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","valid","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","NaN","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","write","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","toArray","mapping","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","spaceWidth","possibleSpaceReplacements","_charToGlyph","widthCode","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParserClosure","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","stack_div","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","pair","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","objects","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","valueLength","setByName","createTables","layout","CFFTopDictClosure","CFFPrivateDictClosure","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler_add","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","Courier","ZapfDingbats","ArialNarrow","ArialBlack","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","H","P","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","copyright","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","multiply","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","DataView","byteOffset","getSize","totalSize","ArrayBuffer","setUint32","setUint16","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","entriesCount","entrySize","maxPower2","tablesNames","tableName","tableOffsets","paddedLength","quad","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","type1Charstrings","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","Type1CharString","Type1CharStringClosure","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","Type1ParserClosure","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","SMALL_NUMBER","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","r0","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fnRefs","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","call","copy","roll","counter","atan","cos","LN10","sin","PostScriptCompilerClosure","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","arg","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","opValue","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_refCache","_byteSize","imageData","_cacheLimitReached","pageIndexSet","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","addState","parentState","checkFn","iterateFn","processFn","InitialState","iterateInlineImageGroup","iFirstSave","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","iFirstPIMXO","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","_totalLength","_resolved","_transfers","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","smaskData","maskData","computedLength","haveFullData","canvas","ctx","getContext","applyMaskImageData","putImageData","transferToImageBitmap","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","opacity","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","imageLength","internal","maybeUndoPreblend","srcPos","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","elem","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","metadata","streamRef","encryptMetadata","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","init","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","outlineItem","unsafeUrl","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","destinations","_readDests","dests","NameTree","getAll","getDestination","allDest","pageLabels","_readPageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","uri","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","namedAction","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","description","contentAvailable","_filename","contentRef","fileObj","_repair","SimpleXMLParser","lowerCaseName","xmlDocument","parseFromString","_metadataMap","_data","d2","d3","charBuf","_getSequence","nodeName","childNodes","_parseArray","hasChildNodes","seqNode","rdf","documentElement","firstChild","nextSibling","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeValue","parentNode","child","searchNode","paths","siblingPos","dump","attribute","hasAttributes","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","role","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","writeValue","writeStream","string","writeArray","numberToString","roundedValue","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","updateXFA","oldXfa","newXfa","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","XFAParser","_createDocument","binder","Binder","form","dataHandler","DataHandler","$globalData","_createPagesHelper","$toPages","nextIteration","setTimeout","_createPages","pages","dims","fontFinder","FontFinder","typeface","usedTypefaces","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","html","class","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","HTMLResult","EMPTY","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","FAILURE","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","acc","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","open","_findDataByNameToConsume","isValue","global","_setProperties","target","connection","setProperty","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","Reflect","construct","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","getContainedChildren","SubformSet","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","thickness","arc","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","display","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","exData","float","integer","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","Filter","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","atob","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","bgColor","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","findIndex","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","nullTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","wrapper","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","real","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","nsPrefix","isNsAgnostic","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","Xdc","Xdp","packets","Xsl","debug","Zpl","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","br","li","ol","span","sub","sup","ul","namespaceId","decodeString","DatasetXMLParser","xrefstms","_cacheMap","_pendingRefs","_newRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","updateEntries","checkPos","tokenStr","objToken","xrefTagOffset","pagesDict","pagesCount","startXRefParsedCache","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","allSettled","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""} \ No newline at end of file
diff --git a/js/pdfjs/web/debugger.css b/js/pdfjs/web/debugger.css
new file mode 100644
index 0000000..4263428
--- /dev/null
+++ b/js/pdfjs/web/debugger.css
@@ -0,0 +1,103 @@
+/* Copyright 2014 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#PDFBug {
+ background-color: rgba(255, 255, 255, 1);
+ border: 1px solid rgba(102, 102, 102, 1);
+ position: fixed;
+ top: 32px;
+ right: 0;
+ bottom: 0;
+ font-size: 10px;
+ padding: 0;
+ width: 300px;
+}
+#PDFBug .controls {
+ background: rgba(238, 238, 238, 1);
+ border-bottom: 1px solid rgba(102, 102, 102, 1);
+ padding: 3px;
+}
+#PDFBug .panels {
+ bottom: 0;
+ left: 0;
+ overflow: auto;
+ position: absolute;
+ right: 0;
+ top: 27px;
+}
+#PDFBug .panels > div {
+ padding: 5px;
+}
+#PDFBug button.active {
+ font-weight: bold;
+}
+.debuggerShowText,
+.debuggerHideText:hover {
+ background-color: rgba(255, 255, 0, 1);
+}
+#PDFBug .stats {
+ font-family: courier;
+ font-size: 10px;
+ white-space: pre;
+}
+#PDFBug .stats .title {
+ font-weight: bold;
+}
+#PDFBug table {
+ font-size: 10px;
+ white-space: pre;
+}
+#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;
+}
+
+#viewer.textLayer-visible .canvasWrapper {
+ background-color: rgba(128, 255, 128, 1);
+}
+
+#viewer.textLayer-visible .canvasWrapper canvas {
+ mix-blend-mode: screen;
+}
+
+#viewer.textLayer-visible .textLayer span {
+ background-color: rgba(255, 255, 0, 0.1);
+ color: rgba(0, 0, 0, 1);
+ border: solid 1px rgba(255, 0, 0, 0.5);
+ box-sizing: border-box;
+}
+
+#viewer.textLayer-hover .textLayer span:hover {
+ background-color: rgba(255, 255, 255, 1);
+ color: rgba(0, 0, 0, 1);
+}
+
+#viewer.textLayer-shadow .textLayer span {
+ background-color: rgba(255, 255, 255, 0.6);
+ color: rgba(0, 0, 0, 1);
+}
diff --git a/js/pdfjs/web/debugger.js b/js/pdfjs/web/debugger.js
index 9686807..1d55710 100644
--- a/js/pdfjs/web/debugger.js
+++ b/js/pdfjs/web/debugger.js
@@ -13,10 +13,9 @@
* limitations under the License.
*/
-"use strict";
+let opMap;
-// eslint-disable-next-line no-var
-var FontInspector = (function FontInspectorClosure() {
+const FontInspector = (function FontInspectorClosure() {
let fonts;
let active = false;
const fontAttribute = "data-font-name";
@@ -49,8 +48,7 @@ var FontInspector = (function FontInspectorClosure() {
}
const fontName = e.target.dataset.fontName;
const selects = document.getElementsByTagName("input");
- for (let i = 0; i < selects.length; ++i) {
- const select = selects[i];
+ for (const select of selects) {
if (select.dataset.fontName !== fontName) {
continue;
}
@@ -65,7 +63,7 @@ var FontInspector = (function FontInspectorClosure() {
name: "Font Inspector",
panel: null,
manager: null,
- init: function init(pdfjsLib) {
+ init(pdfjsLib) {
const panel = this.panel;
const tmp = document.createElement("button");
tmp.addEventListener("click", resetSelection);
@@ -75,7 +73,7 @@ var FontInspector = (function FontInspectorClosure() {
fonts = document.createElement("div");
panel.appendChild(fonts);
},
- cleanup: function cleanup() {
+ cleanup() {
fonts.textContent = "";
},
enabled: false,
@@ -93,16 +91,16 @@ var FontInspector = (function FontInspectorClosure() {
}
},
// FontInspector specific functions.
- fontAdded: function fontAdded(fontObj, url) {
+ fontAdded(fontObj, url) {
function properties(obj, list) {
const moreInfo = document.createElement("table");
- for (let i = 0; i < list.length; i++) {
+ for (const entry of list) {
const tr = document.createElement("tr");
const td1 = document.createElement("td");
- td1.textContent = list[i];
+ td1.textContent = entry;
tr.appendChild(td1);
const td2 = document.createElement("td");
- td2.textContent = obj[list[i]].toString();
+ td2.textContent = obj[entry].toString();
tr.appendChild(td2);
moreInfo.appendChild(tr);
}
@@ -155,12 +153,8 @@ var FontInspector = (function FontInspectorClosure() {
};
})();
-let opMap;
-
// Manages all the page steppers.
-//
-// eslint-disable-next-line no-var
-var StepperManager = (function StepperManagerClosure() {
+const StepperManager = (function StepperManagerClosure() {
let steppers = [];
let stepperDiv = null;
let stepperControls = null;
@@ -172,7 +166,7 @@ var StepperManager = (function StepperManagerClosure() {
name: "Stepper",
panel: null,
manager: null,
- init: function init(pdfjsLib) {
+ init(pdfjsLib) {
const self = this;
stepperControls = document.createElement("div");
stepperChooser = document.createElement("select");
@@ -192,7 +186,7 @@ var StepperManager = (function StepperManagerClosure() {
opMap[pdfjsLib.OPS[key]] = key;
}
},
- cleanup: function cleanup() {
+ cleanup() {
stepperChooser.textContent = "";
stepperDiv.textContent = "";
steppers = [];
@@ -200,7 +194,7 @@ var StepperManager = (function StepperManagerClosure() {
enabled: false,
active: false,
// Stepper specific functions.
- create: function create(pageIndex) {
+ create(pageIndex) {
const debug = document.createElement("div");
debug.id = "stepper" + pageIndex;
debug.hidden = true;
@@ -218,23 +212,19 @@ var StepperManager = (function StepperManagerClosure() {
}
return stepper;
},
- selectStepper: function selectStepper(pageIndex, selectPanel) {
- let i;
+ selectStepper(pageIndex, selectPanel) {
pageIndex |= 0;
if (selectPanel) {
this.manager.selectPanel(this);
}
- for (i = 0; i < steppers.length; ++i) {
- const stepper = steppers[i];
+ for (const stepper of steppers) {
stepper.panel.hidden = stepper.pageIndex !== pageIndex;
}
- const options = stepperChooser.options;
- for (i = 0; i < options.length; ++i) {
- const option = options[i];
+ for (const option of stepperChooser.options) {
option.selected = (option.value | 0) === pageIndex;
}
},
- saveBreakPoints: function saveBreakPoints(pageIndex, bps) {
+ saveBreakPoints(pageIndex, bps) {
breakPoints[pageIndex] = bps;
sessionStorage.setItem("pdfjsBreakPoints", JSON.stringify(breakPoints));
},
@@ -361,8 +351,7 @@ const Stepper = (function StepperClosure() {
const charCodeRow = c("tr");
const fontCharRow = c("tr");
const unicodeRow = c("tr");
- for (let j = 0; j < glyphs.length; j++) {
- const glyph = glyphs[j];
+ for (const glyph of glyphs) {
if (typeof glyph === "object" && glyph !== null) {
charCodeRow.appendChild(c("td", glyph.originalCharCode));
fontCharRow.appendChild(c("td", glyph.fontChar));
@@ -410,9 +399,9 @@ const Stepper = (function StepperClosure() {
this.breakPoints.sort(function (a, b) {
return a - b;
});
- for (let i = 0; i < this.breakPoints.length; i++) {
- if (this.breakPoints[i] > this.currentIdx) {
- return this.breakPoints[i];
+ for (const breakPoint of this.breakPoints) {
+ if (breakPoint > this.currentIdx) {
+ return breakPoint;
}
}
return null;
@@ -444,8 +433,7 @@ const Stepper = (function StepperClosure() {
goTo(idx) {
const allRows = this.panel.getElementsByClassName("line");
- for (let x = 0, xx = allRows.length; x < xx; ++x) {
- const row = allRows[x];
+ for (const row of allRows) {
if ((row.dataset.idx | 0) === idx) {
row.style.backgroundColor = "rgb(251,250,207)";
row.scrollIntoView();
@@ -458,15 +446,14 @@ const Stepper = (function StepperClosure() {
return Stepper;
})();
-// eslint-disable-next-line no-var
-var Stats = (function Stats() {
+const Stats = (function Stats() {
let stats = [];
function clear(node) {
node.textContent = ""; // Remove any `node` contents from the DOM.
}
function getStatIndex(pageNumber) {
- for (let i = 0, ii = stats.length; i < ii; ++i) {
- if (stats[i].pageNumber === pageNumber) {
+ for (const [i, stat] of stats.entries()) {
+ if (stat.pageNumber === pageNumber) {
return i;
}
}
@@ -505,8 +492,8 @@ var Stats = (function Stats() {
return a.pageNumber - b.pageNumber;
});
clear(this.panel);
- for (let i = 0, ii = stats.length; i < ii; ++i) {
- this.panel.appendChild(stats[i].div);
+ for (const entry of stats) {
+ this.panel.appendChild(entry.div);
}
},
cleanup() {
@@ -517,7 +504,7 @@ var Stats = (function Stats() {
})();
// Manages all the debugging tools.
-window.PDFBug = (function PDFBugClosure() {
+const PDFBug = (function PDFBugClosure() {
const panelWidth = 300;
const buttons = [];
let activePanel = null;
@@ -527,8 +514,7 @@ window.PDFBug = (function PDFBugClosure() {
enable(ids) {
const all = ids.length === 1 && ids[0] === "all";
const tools = this.tools;
- for (let i = 0; i < tools.length; ++i) {
- const tool = tools[i];
+ for (const tool of tools) {
if (all || ids.includes(tool.id)) {
tool.enabled = true;
}
@@ -545,6 +531,7 @@ window.PDFBug = (function PDFBugClosure() {
}
},
init(pdfjsLib, container, ids) {
+ this.loadCSS();
this.enable(ids);
/*
* Basic Layout:
@@ -570,22 +557,14 @@ window.PDFBug = (function PDFBugClosure() {
container.style.right = panelWidth + "px";
// Initialize all the debugging tools.
- const tools = this.tools;
- const self = this;
- for (let i = 0; i < tools.length; ++i) {
- const tool = tools[i];
+ for (const tool of this.tools) {
const panel = document.createElement("div");
const panelButton = document.createElement("button");
panelButton.textContent = tool.name;
- panelButton.addEventListener(
- "click",
- (function (selected) {
- return function (event) {
- event.preventDefault();
- self.selectPanel(selected);
- };
- })(i)
- );
+ panelButton.addEventListener("click", event => {
+ event.preventDefault();
+ this.selectPanel(tool);
+ });
controls.appendChild(panelButton);
panels.appendChild(panel);
tool.panel = panel;
@@ -601,10 +580,19 @@ window.PDFBug = (function PDFBugClosure() {
}
this.selectPanel(0);
},
+ loadCSS() {
+ const { url } = import.meta;
+
+ const link = document.createElement("link");
+ link.rel = "stylesheet";
+ link.href = url.replace(/.js$/, ".css");
+
+ document.head.appendChild(link);
+ },
cleanup() {
- for (let i = 0, ii = this.tools.length; i < ii; i++) {
- if (this.tools[i].enabled) {
- this.tools[i].cleanup();
+ for (const tool of this.tools) {
+ if (tool.enabled) {
+ tool.cleanup();
}
}
},
@@ -616,13 +604,18 @@ window.PDFBug = (function PDFBugClosure() {
return;
}
activePanel = index;
- const tools = this.tools;
- for (let j = 0; j < tools.length; ++j) {
+ for (const [j, tool] of this.tools.entries()) {
const isActive = j === index;
buttons[j].classList.toggle("active", isActive);
- tools[j].active = isActive;
- tools[j].panel.hidden = !isActive;
+ tool.active = isActive;
+ tool.panel.hidden = !isActive;
}
},
};
})();
+
+globalThis.FontInspector = FontInspector;
+globalThis.StepperManager = StepperManager;
+globalThis.Stats = Stats;
+
+export { PDFBug };
diff --git a/js/pdfjs/web/locale/be/viewer.properties b/js/pdfjs/web/locale/be/viewer.properties
index ec3002c..1e346eb 100644
--- a/js/pdfjs/web/locale/be/viewer.properties
+++ b/js/pdfjs/web/locale/be/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ЗнайÑці наÑтупны выпадак выразу
find_next_label=ÐаÑтупны
find_highlight=Падфарбаваць уÑе
find_match_case_label=Ðдрозніваць вÑлікіÑ/Ð¼Ð°Ð»Ñ‹Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹
+find_match_diacritics_label=З улікам дыÑкрытык
find_entire_word_label=Словы цалкам
find_reached_top=ДаÑÑгнуты пачатак дакумента, працÑг з канца
find_reached_bottom=ДаÑÑгнуты канец дакумента, працÑг з пачатку
@@ -226,7 +227,7 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading=Чытаецца…
-loading_error=ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– PDF.
+loading_error=ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° ў чаÑе загрузкі PDF.
invalid_file_error=ÐÑÑпраўны або пашкоджаны файл PDF.
missing_file_error=ÐдÑутны файл PDF.
unexpected_response_error=Ðечаканы адказ Ñервера.
diff --git a/js/pdfjs/web/locale/ca/viewer.properties b/js/pdfjs/web/locale/ca/viewer.properties
index 3ada5f2..21e7dff 100644
--- a/js/pdfjs/web/locale/ca/viewer.properties
+++ b/js/pdfjs/web/locale/ca/viewer.properties
@@ -61,6 +61,8 @@ cursor_text_select_tool_label=Eina de selecció de text
cursor_hand_tool.title=Habilita l'eina de mà
cursor_hand_tool_label=Eina de mà
+scroll_page.title=Usa el desplaçament de pàgina
+scroll_page_label=Desplaçament de pàgina
scroll_vertical.title=Utilitza el desplaçament vertical
scroll_vertical_label=Desplaçament vertical
scroll_horizontal.title=Utilitza el desplaçament horitzontal
@@ -246,5 +248,3 @@ 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/js/pdfjs/web/locale/cs/viewer.properties b/js/pdfjs/web/locale/cs/viewer.properties
index 341172c..73bffe7 100644
--- a/js/pdfjs/web/locale/cs/viewer.properties
+++ b/js/pdfjs/web/locale/cs/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Najde další výskyt hledaného textu
find_next_label=Další
find_highlight=Zvýraznit
find_match_case_label=Rozlišovat velikost
+find_match_diacritics_label=Rozlišovat diakritiku
find_entire_word_label=Celá slova
find_reached_top=Dosažen zaÄátek dokumentu, pokraÄuje se od konce
find_reached_bottom=Dosažen konec dokumentu, pokraÄuje se od zaÄátku
diff --git a/js/pdfjs/web/locale/cy/viewer.properties b/js/pdfjs/web/locale/cy/viewer.properties
index d9c7059..9ede32a 100644
--- a/js/pdfjs/web/locale/cy/viewer.properties
+++ b/js/pdfjs/web/locale/cy/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Canfod enghraifft nesaf yr ymadrodd
find_next_label=Nesaf
find_highlight=Amlygu popeth
find_match_case_label=Cydweddu maint
+find_match_diacritics_label=Diacritigau Cyfatebol
find_entire_word_label=Geiriau cyfan
find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod
find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig
diff --git a/js/pdfjs/web/locale/da/viewer.properties b/js/pdfjs/web/locale/da/viewer.properties
index a67fedc..fefc73b 100644
--- a/js/pdfjs/web/locale/da/viewer.properties
+++ b/js/pdfjs/web/locale/da/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Find den næste forekomst
find_next_label=Næste
find_highlight=Fremhæv alle
find_match_case_label=Forskel på store og små bogstaver
+find_match_diacritics_label=Diakritiske tegn
find_entire_word_label=Hele ord
find_reached_top=Toppen af siden blev nået, fortsatte fra bunden
find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen
diff --git a/js/pdfjs/web/locale/de/viewer.properties b/js/pdfjs/web/locale/de/viewer.properties
index 1cda13f..71b8745 100644
--- a/js/pdfjs/web/locale/de/viewer.properties
+++ b/js/pdfjs/web/locale/de/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Nächstes Vorkommen des Suchbegriffs finden
find_next_label=Weiter
find_highlight=Alle hervorheben
find_match_case_label=Groß-/Kleinschreibung beachten
+find_match_diacritics_label=Akzente
find_entire_word_label=Ganze Wörter
find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort
find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort
diff --git a/js/pdfjs/web/locale/dsb/viewer.properties b/js/pdfjs/web/locale/dsb/viewer.properties
index 1a0e9ab..6eecd63 100644
--- a/js/pdfjs/web/locale/dsb/viewer.properties
+++ b/js/pdfjs/web/locale/dsb/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Pśidujuce wustupowanje pytańskego wuraza pytaś
find_next_label=Dalej
find_highlight=WÅ¡ykne wuzwignuÅ›
find_match_case_label=Na wjelikopisanje źiwaś
+find_match_diacritics_label=Diakritiske znamuška wužywaś
find_entire_word_label=Cełe słowa
find_reached_top=Zachopjeńk dokumenta dostany, pókšacujo se z kóńcom
find_reached_bottom=Kóńc dokumenta dostany, pókšacujo se ze zachopjeńkom
diff --git a/js/pdfjs/web/locale/el/viewer.properties b/js/pdfjs/web/locale/el/viewer.properties
index 2525b3b..f6063fb 100644
--- a/js/pdfjs/web/locale/el/viewer.properties
+++ b/js/pdfjs/web/locale/el/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ΕÏÏεση της επόμενης εμφάνισης της Ï
find_next_label=Επόμενο
find_highlight=Επισήμανση όλων
find_match_case_label=Συμφωνία πεζών/κεφαλαίων
+find_match_diacritics_label=Αντιστοίχιση διακÏιτικών
find_entire_word_label=ΟλόκληÏες λέξεις
find_reached_top=Φτάσατε στην αÏχή του εγγÏάφου, συνέχεια από το τέλος
find_reached_bottom=Φτάσατε στο τέλος του εγγÏάφου, συνέχεια από την αÏχή
diff --git a/js/pdfjs/web/locale/en-CA/viewer.properties b/js/pdfjs/web/locale/en-CA/viewer.properties
index d14ab52..f83db92 100644
--- a/js/pdfjs/web/locale/en-CA/viewer.properties
+++ b/js/pdfjs/web/locale/en-CA/viewer.properties
@@ -168,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
-find_highlight=Highlight all
-find_match_case_label=Match case
-find_entire_word_label=Whole words
+find_highlight=Highlight All
+find_match_case_label=Match Case
+find_match_diacritics_label=Match Diacritics
+find_entire_word_label=Whole Words
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
diff --git a/js/pdfjs/web/locale/en-GB/viewer.properties b/js/pdfjs/web/locale/en-GB/viewer.properties
index 48f6e67..2cfdda6 100644
--- a/js/pdfjs/web/locale/en-GB/viewer.properties
+++ b/js/pdfjs/web/locale/en-GB/viewer.properties
@@ -168,9 +168,10 @@ find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
-find_highlight=Highlight all
-find_match_case_label=Match case
-find_entire_word_label=Whole words
+find_highlight=Highlight All
+find_match_case_label=Match Case
+find_match_diacritics_label=Match Diacritics
+find_entire_word_label=Whole Words
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
diff --git a/js/pdfjs/web/locale/eo/viewer.properties b/js/pdfjs/web/locale/eo/viewer.properties
index 004307e..fa763d5 100644
--- a/js/pdfjs/web/locale/eo/viewer.properties
+++ b/js/pdfjs/web/locale/eo/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Serĉi la venontan aperon de la frazo
find_next_label=AntaÅ­en
find_highlight=Elstarigi ĉiujn
find_match_case_label=Distingi inter majuskloj kaj minuskloj
+find_match_diacritics_label=Respekti supersignojn
find_entire_word_label=Tutaj vortoj
find_reached_top=Komenco de la dokumento atingita, daÅ­rigado ekde la fino
find_reached_bottom=Fino de la dokumento atingita, daÅ­rigado ekde la komenco
diff --git a/js/pdfjs/web/locale/es-AR/viewer.properties b/js/pdfjs/web/locale/es-AR/viewer.properties
index 7d6ba40..044b9ea 100644
--- a/js/pdfjs/web/locale/es-AR/viewer.properties
+++ b/js/pdfjs/web/locale/es-AR/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Buscar la siguiente aparición de la frase
find_next_label=Siguiente
find_highlight=Resaltar todo
find_match_case_label=Coincidir mayúsculas
+find_match_diacritics_label=Coincidir diacríticos
find_entire_word_label=Palabras completas
find_reached_top=Inicio de documento alcanzado, continuando desde abajo
find_reached_bottom=Fin de documento alcanzando, continuando desde arriba
diff --git a/js/pdfjs/web/locale/es-CL/viewer.properties b/js/pdfjs/web/locale/es-CL/viewer.properties
index 90fdf9f..0d23f2e 100644
--- a/js/pdfjs/web/locale/es-CL/viewer.properties
+++ b/js/pdfjs/web/locale/es-CL/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Buscar la siguiente aparición de la frase
find_next_label=Siguiente
find_highlight=Destacar todos
find_match_case_label=Coincidir mayús./minús.
+find_match_diacritics_label=Coincidir diacríticos
find_entire_word_label=Palabras completas
find_reached_top=Se alcanzó el inicio del documento, continuando desde el final
find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio
diff --git a/js/pdfjs/web/locale/es-ES/viewer.properties b/js/pdfjs/web/locale/es-ES/viewer.properties
index de4bbdf..e4cea21 100644
--- a/js/pdfjs/web/locale/es-ES/viewer.properties
+++ b/js/pdfjs/web/locale/es-ES/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Encontrar la siguiente aparición de esta frase
find_next_label=Siguiente
find_highlight=Resaltar todos
find_match_case_label=Coincidencia de mayús./minús.
+find_match_diacritics_label=Coincidir diacríticos
find_entire_word_label=Palabras completas
find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final
find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio
diff --git a/js/pdfjs/web/locale/es-MX/viewer.properties b/js/pdfjs/web/locale/es-MX/viewer.properties
index a44768d..dc0ce0d 100644
--- a/js/pdfjs/web/locale/es-MX/viewer.properties
+++ b/js/pdfjs/web/locale/es-MX/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Ir a la siguiente frase encontrada
find_next_label=Siguiente
find_highlight=Resaltar todo
find_match_case_label=Coincidir con mayúsculas y minúsculas
+find_match_diacritics_label=Coincidir diacríticos
find_entire_word_label=Palabras completas
find_reached_top=Se alcanzó el inicio del documento, se buscará al final
find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio
diff --git a/js/pdfjs/web/locale/et/viewer.properties b/js/pdfjs/web/locale/et/viewer.properties
index 17bf0e4..9d1fe3f 100644
--- a/js/pdfjs/web/locale/et/viewer.properties
+++ b/js/pdfjs/web/locale/et/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Otsi fraasi järgmine esinemiskoht
find_next_label=Järgmine
find_highlight=Too kõik esile
find_match_case_label=Tõstutundlik
+find_match_diacritics_label=Otsitakse diakriitiliselt
find_entire_word_label=Täissõnad
find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust
find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest
diff --git a/js/pdfjs/web/locale/eu/viewer.properties b/js/pdfjs/web/locale/eu/viewer.properties
index aa2bef7..6868742 100644
--- a/js/pdfjs/web/locale/eu/viewer.properties
+++ b/js/pdfjs/web/locale/eu/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Bilatu esaldiaren hurrengo parekatzea
find_next_label=Hurrengoa
find_highlight=Nabarmendu guztia
find_match_case_label=Bat etorri maiuskulekin/minuskulekin
+find_match_diacritics_label=Bereizi diakritikoak
find_entire_word_label=Hitz osoak
find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen
find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen
diff --git a/js/pdfjs/web/locale/fr/viewer.properties b/js/pdfjs/web/locale/fr/viewer.properties
index 54d8033..fcf8ec0 100644
--- a/js/pdfjs/web/locale/fr/viewer.properties
+++ b/js/pdfjs/web/locale/fr/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Trouver la prochaine occurrence de l’expression
find_next_label=Suivant
find_highlight=Tout surligner
find_match_case_label=Respecter la casse
+find_match_diacritics_label=Respecter les accents et diacritiques
find_entire_word_label=Mots entiers
find_reached_top=Haut de la page atteint, poursuite depuis la fin
find_reached_bottom=Bas de la page atteint, poursuite au début
diff --git a/js/pdfjs/web/locale/fy-NL/viewer.properties b/js/pdfjs/web/locale/fy-NL/viewer.properties
index 996d7c4..09064e9 100644
--- a/js/pdfjs/web/locale/fy-NL/viewer.properties
+++ b/js/pdfjs/web/locale/fy-NL/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=It folgjende foarkommen fan de tekst sykje
find_next_label=Folgjende
find_highlight=Alles markearje
find_match_case_label=Haadlettergefoelich
+find_match_diacritics_label=Diakrityske tekens brûke
find_entire_word_label=Hiele wurden
find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf
find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf
diff --git a/js/pdfjs/web/locale/gn/viewer.properties b/js/pdfjs/web/locale/gn/viewer.properties
index e443df9..594a9da 100644
--- a/js/pdfjs/web/locale/gn/viewer.properties
+++ b/js/pdfjs/web/locale/gn/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Eho ñe’ẽ juhupyre upeiguávape
find_next_label=Upeigua
find_highlight=Embojekuaavepa
find_match_case_label=Ejesareko taiguasu/taimichĩre
+find_match_diacritics_label=Diacrítico moñondive
find_entire_word_label=Ñe’ẽ oĩmbáva
find_reached_top=Ojehupyty kuatia ñepyrũ, oku’ejeýta kuatia paha guive
find_reached_bottom=Ojehupyty kuatia paha, oku’ejeýta kuatia ñepyrũ guive
diff --git a/js/pdfjs/web/locale/hsb/viewer.properties b/js/pdfjs/web/locale/hsb/viewer.properties
index 24ce8a6..ec01124 100644
--- a/js/pdfjs/web/locale/hsb/viewer.properties
+++ b/js/pdfjs/web/locale/hsb/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Přichodne wustupowanje pytanskeho wuraza pytać
find_next_label=Dale
find_highlight=Wšě wuzběhnyć
find_match_case_label=Wulkopisanje wobkedźbować
+find_match_diacritics_label=Diakritiske znamješka wužiwać
find_entire_word_label=Cyłe słowa
find_reached_top=SpoÄatk dokumenta docpÄ›ty, pokroÄuje so z kóncom
find_reached_bottom=Kónc dokument docpÄ›ty, pokroÄuje so ze spoÄatkom
diff --git a/js/pdfjs/web/locale/hu/viewer.properties b/js/pdfjs/web/locale/hu/viewer.properties
index f26b929..ab6bd55 100644
--- a/js/pdfjs/web/locale/hu/viewer.properties
+++ b/js/pdfjs/web/locale/hu/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=A kifejezés következő előfordulásának keresése
find_next_label=Tovább
find_highlight=Összes kiemelése
find_match_case_label=Kis- és nagybetűk megkülönböztetése
+find_match_diacritics_label=Diakritikus jelek
find_entire_word_label=Teljes szavak
find_reached_top=A dokumentum eleje elérve, folytatás a végétől
find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől
diff --git a/js/pdfjs/web/locale/hye/viewer.properties b/js/pdfjs/web/locale/hye/viewer.properties
index 6af5982..d531b9d 100644
--- a/js/pdfjs/web/locale/hye/viewer.properties
+++ b/js/pdfjs/web/locale/hye/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Ô³Õ¿Õ«Ö€ Õ¡Ö€Õ¿Õ¡ÕµÕ¡ÕµÕ¿Õ¸Ö‚Õ©Õ¥Õ¡Õ¶ ÕµÕ¡Õ»Õ¸Ö€Õ¤ Õ¡Ö€Õ¿Õ¡ÕµÕ¡Õ
find_next_label=Õ€Õ¡Õ»Õ¸Ö€Õ¤Õ¨
find_highlight=Ô³Õ¸Ö‚Õ¶Õ¡Õ¶Õ·Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨
find_match_case_label=Õ€Õ¡Õ·Õ¸Ö‚Õ« Õ¡Õ¼Õ¶Õ¥Õ¬ Õ°Õ¡Õ¶Õ£Õ¡Õ´Õ¡Õ¶Ö„Õ¨
+find_match_diacritics_label=Õ€Õ¶Õ¹Õ«Ö‚Õ¶Õ¡Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ«Õ¹ Õ¶Õ·Õ¡Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¥ÖÕ¸Ö‚Õ´
find_entire_word_label=Ô±Õ´Õ¢Õ¸Õ²Õ» Õ¢Õ¡Õ¼Õ¥Ö€Õ¨
find_reached_top=Õ€Õ¡Õ½Õ¥Õ¬ Õ¥Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ¥Ö‚Õ«Õ¶,Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¶Õ¥Ö€Ö„Õ¥Ö‚Õ«Ö
find_reached_bottom=Õ€Õ¡Õ½Õ¥Õ¬ Õ§Ö„ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¾Õ¥Ö€Õ»Õ«Õ¶, Õ·Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¾Õ¥Ö€Õ¥Ö‚Õ«Ö
diff --git a/js/pdfjs/web/locale/ia/viewer.properties b/js/pdfjs/web/locale/ia/viewer.properties
index bbb68b7..0b2cf95 100644
--- a/js/pdfjs/web/locale/ia/viewer.properties
+++ b/js/pdfjs/web/locale/ia/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Trovar le successive occurrentia del phrase
find_next_label=Sequente
find_highlight=Evidentiar toto
find_match_case_label=Distinguer majusculas/minusculas
+find_match_diacritics_label=Differentiar diacriticos
find_entire_word_label=Parolas integre
find_reached_top=Initio del documento attingite, continuation ab fin
find_reached_bottom=Fin del documento attingite, continuation ab initio
diff --git a/js/pdfjs/web/locale/id/viewer.properties b/js/pdfjs/web/locale/id/viewer.properties
index ad7d04d..83ab869 100644
--- a/js/pdfjs/web/locale/id/viewer.properties
+++ b/js/pdfjs/web/locale/id/viewer.properties
@@ -61,6 +61,8 @@ cursor_text_select_tool_label=Alat Seleksi Teks
cursor_hand_tool.title=Aktifkan Alat Tangan
cursor_hand_tool_label=Alat Tangan
+scroll_page.title=Gunakan Pengguliran Laman
+scroll_page_label=Pengguliran Laman
scroll_vertical.title=Gunakan Penggeseran Vertikal
scroll_vertical_label=Penggeseran Vertikal
scroll_horizontal.title=Gunakan Penggeseran Horizontal
@@ -168,6 +170,7 @@ find_next.title=Temukan lebih lanjut
find_next_label=Selanjutnya
find_highlight=Sorot semuanya
find_match_case_label=Cocokkan BESAR/kecil
+find_match_diacritics_label=Pencocokan Diakritik
find_entire_word_label=Seluruh teks
find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah
find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas
diff --git a/js/pdfjs/web/locale/is/viewer.properties b/js/pdfjs/web/locale/is/viewer.properties
index f1a7b3f..0d1dea8 100644
--- a/js/pdfjs/web/locale/is/viewer.properties
+++ b/js/pdfjs/web/locale/is/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Leita að næsta tilfelli þessara orða
find_next_label=Næsti
find_highlight=Lita allt
find_match_case_label=Passa við stafstöðu
+find_match_diacritics_label=Passa við broddstafi
find_entire_word_label=Heil orð
find_reached_top=Náði efst í skjal, held áfram neðst
find_reached_bottom=Náði enda skjals, held áfram efst
diff --git a/js/pdfjs/web/locale/ja/viewer.properties b/js/pdfjs/web/locale/ja/viewer.properties
index 6fbabca..c9e9340 100644
--- a/js/pdfjs/web/locale/ja/viewer.properties
+++ b/js/pdfjs/web/locale/ja/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ç¾åœ¨ã‚ˆã‚Šå¾Œã®ä½ç½®ã§æŒ‡å®šæ–‡å­—列ãŒç¾ã‚Œã‚‹éƒ¨åˆ†ã‚’æ
find_next_label=次ã¸
find_highlight=ã™ã¹ã¦å¼·èª¿è¡¨ç¤º
find_match_case_label=大文字/å°æ–‡å­—を区別
+find_match_diacritics_label=発音区別符å·ã‚’区別
find_entire_word_label=å˜èªžä¸€è‡´
find_reached_top=文書先頭ã«åˆ°é”ã—ãŸã®ã§æœ«å°¾ã‹ã‚‰ç¶šã‘ã¦æ¤œç´¢ã—ã¾ã™
find_reached_bottom=文書末尾ã«åˆ°é”ã—ãŸã®ã§å…ˆé ­ã‹ã‚‰ç¶šã‘ã¦æ¤œç´¢ã—ã¾ã™
diff --git a/js/pdfjs/web/locale/ka/viewer.properties b/js/pdfjs/web/locale/ka/viewer.properties
index 2144a11..dd6d057 100644
--- a/js/pdfjs/web/locale/ka/viewer.properties
+++ b/js/pdfjs/web/locale/ka/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ფრáƒáƒ–ის შემდეგი კáƒáƒœáƒ¢áƒ”ქსáƒ
find_next_label=შემდეგი
find_highlight=ყველáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ
find_match_case_label=ემთხვევრმთáƒáƒ•áƒ áƒ£áƒšáƒ˜
+find_match_diacritics_label=ემთხვევრნიშნები
find_entire_word_label=მთლიáƒáƒœáƒ˜ სიტყვები
find_reached_top=მიღწეულირდáƒáƒ™áƒ£áƒ›áƒ”ნტის დáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜, გრძელდებრბáƒáƒšáƒáƒ“áƒáƒœ
find_reached_bottom=მიღწეულირდáƒáƒ™áƒ£áƒ›áƒ”ნტის ბáƒáƒšáƒ, გრძელდებრდáƒáƒ¡áƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜áƒ“áƒáƒœ
diff --git a/js/pdfjs/web/locale/kab/viewer.properties b/js/pdfjs/web/locale/kab/viewer.properties
index bb249d0..cbf9566 100644
--- a/js/pdfjs/web/locale/kab/viewer.properties
+++ b/js/pdfjs/web/locale/kab/viewer.properties
@@ -61,6 +61,8 @@ cursor_text_select_tool_label=Afecku n tefrant n uá¸ris
cursor_hand_tool.title=Rmed afecku afus
cursor_hand_tool_label=Afecku afus
+scroll_page.title=Seqdec adrurem n usebter
+scroll_page_label=Adrurem n usebter
scroll_vertical.title=Seqdec adrurem ubdid
scroll_vertical_label=Adrurem ubdid
scroll_horizontal.title=Seqdec adrurem aglawan
@@ -168,6 +170,7 @@ find_next.title=Aff-d timseá¸riwt n twinest d-iteddun
find_next_label=Ddu ɣer zdat
find_highlight=Err izirig imaṛṛa
find_match_case_label=Qadeá¹› amasal n isekkilen
+find_match_diacritics_label=Qadeá¹› ifeskilen
find_entire_word_label=Awalen iÄÄuranen
find_reached_top=YabbeḠs afella n usebter, tuɣalin s wadda
find_reached_bottom=Tebá¸eḠs adda n usebter, tuÉ£alin s afella
diff --git a/js/pdfjs/web/locale/kk/viewer.properties b/js/pdfjs/web/locale/kk/viewer.properties
index 4565044..41fc817 100644
--- a/js/pdfjs/web/locale/kk/viewer.properties
+++ b/js/pdfjs/web/locale/kk/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ОÑÑ‹ Ñөздердің мәтіннен келеÑÑ– кезд
find_next_label=КелеÑÑ–
find_highlight=Барлығын Ñ‚Ò¯Ñпен ерекшелеу
find_match_case_label=РегиÑтрді еÑкеру
+find_match_diacritics_label=Диакритиканы еÑкеру
find_entire_word_label=Сөздер толығымен
find_reached_top=Құжаттың баÑына жеттік, Ñоңынан баÑтап жалғаÑтырамыз
find_reached_bottom=Құжаттың Ñоңына жеттік, баÑынан баÑтап жалғаÑтырамыз
diff --git a/js/pdfjs/web/locale/ko/viewer.properties b/js/pdfjs/web/locale/ko/viewer.properties
index e9c9494..6812ae6 100644
--- a/js/pdfjs/web/locale/ko/viewer.properties
+++ b/js/pdfjs/web/locale/ko/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=지정 문ìžì—´ì— ì¼ì¹˜í•˜ëŠ” ë‹¤ìŒ ë¶€ë¶„ì„ ê²€ìƒ‰
find_next_label=다ìŒ
find_highlight=ëª¨ë‘ ê°•ì¡° 표시
find_match_case_label=대/ì†Œë¬¸ìž êµ¬ë¶„
+find_match_diacritics_label=ë¶„ìŒ ë¶€í˜¸ ì¼ì¹˜
find_entire_word_label=단어 단위로
find_reached_top=문서 처ìŒê¹Œì§€ 검색하고 ë으로 ëŒì•„와 검색했습니다.
find_reached_bottom=문서 ë까지 검색하고 앞으로 ëŒì•„와 검색했습니다.
diff --git a/js/pdfjs/web/locale/nb-NO/viewer.properties b/js/pdfjs/web/locale/nb-NO/viewer.properties
index 0bb9958..a346537 100644
--- a/js/pdfjs/web/locale/nb-NO/viewer.properties
+++ b/js/pdfjs/web/locale/nb-NO/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Finn neste forekomst av frasen
find_next_label=Neste
find_highlight=Uthev alle
find_match_case_label=Skill store/små bokstaver
+find_match_diacritics_label=Samsvar diakritiske tegn
find_entire_word_label=Hele ord
find_reached_top=NÃ¥dde toppen av dokumentet, fortsetter fra bunnen
find_reached_bottom=NÃ¥dde bunnen av dokumentet, fortsetter fra toppen
diff --git a/js/pdfjs/web/locale/nl/viewer.properties b/js/pdfjs/web/locale/nl/viewer.properties
index ea47d68..028b498 100644
--- a/js/pdfjs/web/locale/nl/viewer.properties
+++ b/js/pdfjs/web/locale/nl/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=De volgende overeenkomst van de tekst zoeken
find_next_label=Volgende
find_highlight=Alles markeren
find_match_case_label=Hoofdlettergevoelig
+find_match_diacritics_label=Diakritische tekens gebruiken
find_entire_word_label=Hele woorden
find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant
find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant
diff --git a/js/pdfjs/web/locale/nn-NO/viewer.properties b/js/pdfjs/web/locale/nn-NO/viewer.properties
index 2feff78..5e96649 100644
--- a/js/pdfjs/web/locale/nn-NO/viewer.properties
+++ b/js/pdfjs/web/locale/nn-NO/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Finn neste førekomst av frasen
find_next_label=Neste
find_highlight=Uthev alle
find_match_case_label=Skil store/små bokstavar
+find_match_diacritics_label=Samsvar diakritiske teikn
find_entire_word_label=Heile ord
find_reached_top=Nådde toppen av dokumentet, fortset frå botnen
find_reached_bottom=Nådde botnen av dokumentet, fortset frå toppen
diff --git a/js/pdfjs/web/locale/oc/viewer.properties b/js/pdfjs/web/locale/oc/viewer.properties
index 219de4d..d5d14be 100644
--- a/js/pdfjs/web/locale/oc/viewer.properties
+++ b/js/pdfjs/web/locale/oc/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Tròba l'ocurréncia venenta de la frasa
find_next_label=Seguent
find_highlight=Suslinhar tot
find_match_case_label=Respectar la cassa
+find_match_diacritics_label=Respectar los diacritics
find_entire_word_label=Mots entièrs
find_reached_top=Naut de la pagina atenh, perseguida del bas
find_reached_bottom=Bas de la pagina atench, perseguida al començament
diff --git a/js/pdfjs/web/locale/pa-IN/viewer.properties b/js/pdfjs/web/locale/pa-IN/viewer.properties
index 61215db..b509f56 100644
--- a/js/pdfjs/web/locale/pa-IN/viewer.properties
+++ b/js/pdfjs/web/locale/pa-IN/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ
find_next_label=ਅੱਗੇ
find_highlight=ਸਭ ਉਭਾਰੋ
find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ
+find_match_diacritics_label=ਭੇਦਸੂਚਕ ਮੇਲ
find_entire_word_label=ਪੂਰੇ ਸ਼ਬਦ
find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਠਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
diff --git a/js/pdfjs/web/locale/pl/viewer.properties b/js/pdfjs/web/locale/pl/viewer.properties
index e841f13..02e78f3 100644
--- a/js/pdfjs/web/locale/pl/viewer.properties
+++ b/js/pdfjs/web/locale/pl/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Znajdź następne wystąpienie tekstu
find_next_label=Następne
find_highlight=Wyróżnianie wszystkich
find_match_case_label=Rozróżnianie wielkości liter
+find_match_diacritics_label=Rozróżnianie liter diakrytyzowanych
find_entire_word_label=Całe słowa
find_reached_top=Początek dokumentu. Wyszukiwanie od końca.
find_reached_bottom=Koniec dokumentu. Wyszukiwanie od poczÄ…tku.
diff --git a/js/pdfjs/web/locale/pt-BR/viewer.properties b/js/pdfjs/web/locale/pt-BR/viewer.properties
index f91b2aa..f76f525 100644
--- a/js/pdfjs/web/locale/pt-BR/viewer.properties
+++ b/js/pdfjs/web/locale/pt-BR/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Procurar a próxima ocorrência da frase
find_next_label=Próxima
find_highlight=Destacar tudo
find_match_case_label=Diferenciar maiúsculas/minúsculas
+find_match_diacritics_label=Considerar acentuação
find_entire_word_label=Palavras completas
find_reached_top=Início do documento alcançado, continuando do fim
find_reached_bottom=Fim do documento alcançado, continuando do início
diff --git a/js/pdfjs/web/locale/pt-PT/viewer.properties b/js/pdfjs/web/locale/pt-PT/viewer.properties
index 8a44e1e..fed3147 100644
--- a/js/pdfjs/web/locale/pt-PT/viewer.properties
+++ b/js/pdfjs/web/locale/pt-PT/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Localizar ocorrência seguinte da frase
find_next_label=Seguinte
find_highlight=Destacar tudo
find_match_case_label=Correspondência
+find_match_diacritics_label=Corresponder diacríticos
find_entire_word_label=Palavras completas
find_reached_top=Topo do documento atingido, a continuar a partir do fundo
find_reached_bottom=Fim do documento atingido, a continuar a partir do topo
diff --git a/js/pdfjs/web/locale/rm/viewer.properties b/js/pdfjs/web/locale/rm/viewer.properties
index 85d4e86..19364d2 100644
--- a/js/pdfjs/web/locale/rm/viewer.properties
+++ b/js/pdfjs/web/locale/rm/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Tschertgar la proxima posiziun da l'expressiun
find_next_label=Enavant
find_highlight=Relevar tuts
find_match_case_label=Resguardar maiusclas/minusclas
+find_match_diacritics_label=Resguardar ils segns diacritics
find_entire_word_label=Pleds entirs
find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document
find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document
diff --git a/js/pdfjs/web/locale/ru/viewer.properties b/js/pdfjs/web/locale/ru/viewer.properties
index 8f817bd..8e2e95a 100644
--- a/js/pdfjs/web/locale/ru/viewer.properties
+++ b/js/pdfjs/web/locale/ru/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Ðайти Ñледующее вхождение фразы в Ñ
find_next_label=Далее
find_highlight=ПодÑветить вÑе
find_match_case_label=С учётом региÑтра
+find_match_diacritics_label=С учётом диакритичеÑких знаков
find_entire_word_label=Слова целиком
find_reached_top=ДоÑтигнут верх документа, продолжено Ñнизу
find_reached_bottom=ДоÑтигнут конец документа, продолжено Ñверху
diff --git a/js/pdfjs/web/locale/sat/viewer.properties b/js/pdfjs/web/locale/sat/viewer.properties
index 53d75f2..9cfa1f5 100644
--- a/js/pdfjs/web/locale/sat/viewer.properties
+++ b/js/pdfjs/web/locale/sat/viewer.properties
@@ -13,54 +13,96 @@
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=पा़हिलाकॠसाहटा
+previous.title=ᱢᱟᱲᱟᱠᱥᱟᱦᱴᱟ
+previous_label=ᱢᱟᱲᱟá±á±Ÿá±œ
next.title=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱥᱟᱦᱴᱟ
+next_label=ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=ᱥᱟᱦᱴᱟ
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
+of_pages=ᱨᱮᱭᱟᱜ {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
-
-zoom.title=हà¥à¤¡à¤¿à¤ž ला़टॠतेयार
-presentation_mode.title=उदà¥à¤•à¥ सोदोर ओबोसता रे ओताय मे
-presentation_mode_label=उदà¥à¤•à¥ सोदोर ओबोसता
-open_file.title=रेतॠà¤à¤¿à¤œ मे
-open_file_label=à¤à¤¿à¤œ मे à¤à¤¿à¤šà¥
-bookmark.title=नितोगाकॠञेल (नावा विंडो रे नोकोल आर बाङ à¤à¤¿à¤œ मे )
-bookmark_label=नितोगाकॠञेंल
+page_of_pages=({{pageNumber}} ᱠᱷᱚᱱ {{pagesCount}})
+
+zoom_out.title=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ
+zoom_out_label=ᱦᱤᱲᱤᱧ ᱛᱮᱭᱟᱨ
+zoom_in.title=ᱢᱟᱨᱟᱠᱛᱮᱭᱟᱨ
+zoom_in_label=ᱢᱟᱨᱟᱠᱛᱮᱭᱟᱨ
+zoom.title=ᱡᱩᱢ
+presentation_mode.title=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ ᱚᱛᱟᱭ ᱢᱮ
+presentation_mode_label=ᱩᱫᱩᱜ ᱥᱚᱫᱚᱨ ᱚᱵᱚᱥᱛᱟ ᱨᱮ
+open_file.title=ᱨᱮᱫ ᱡᱷᱤᱡᱽ ᱢᱮ
+open_file_label=ᱡᱷᱤᱡᱽ ᱢᱮ
+print.title=ᱪᱷᱟᱯᱟ
+print_label=ᱪᱷᱟᱯᱟ
+download.title=ᱰᱟᱩᱱᱞᱚᱰ
+download_label=ᱰᱟᱩᱱᱞᱚᱰ
+bookmark.title=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ (ᱱᱚᱶᱟ ᱡᱷᱚᱨᱠᱟ ᱨᱮ ᱱᱚᱠᱚᱞ ᱟᱨ ᱵᱟᱠᱡᱷᱤᱡᱽ ᱢᱮ )
+bookmark_label=ᱱᱤᱛᱚᱜᱟᱜ ᱧᱮᱞ
# Secondary toolbar and context menu
-
-
+tools.title=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ
+tools_label=ᱦᱟᱹᱛᱤᱭᱟᱹᱨ ᱠᱚ
+first_page.title=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ
+first_page_label=ᱯᱩᱭᱞᱩ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ
+last_page.title=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ
+last_page_label=ᱢᱩᱪᱟᱹᱫ ᱥᱟᱦᱴᱟ ᱥᱮᱫ ᱪᱟᱞᱟᱜ ᱢᱮ
+page_rotate_cw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ
+page_rotate_cw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱟᱹᱪᱩᱨ
+page_rotate_ccw.title=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ
+page_rotate_ccw_label=ᱜᱷᱚᱰᱤ ᱦᱤᱥᱟᱹᱵ ᱛᱮ ᱩᱞᱴᱟᱹ ᱟᱹᱪᱩᱨ
+
+cursor_text_select_tool.title=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ
+cursor_text_select_tool_label=ᱚᱞ ᱵᱟᱪᱷᱟᱣ ᱦᱟᱹᱛᱤᱭᱟᱨ
+cursor_hand_tool.title=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ ᱮᱢ ᱪᱷᱚᱭ ᱢᱮ
+cursor_hand_tool_label=ᱛᱤ ᱦᱟᱹᱛᱤᱭᱟᱨ
+
+scroll_page.title=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ
+scroll_page_label=ᱥᱟᱦᱴᱟ ᱜᱩᱲᱟᱹᱣ
+scroll_vertical.title=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ
+scroll_vertical_label=ᱥᱤᱫᱽ ᱜᱩᱲᱟᱹᱣ
+scroll_horizontal.title=ᱜᱤᱛᱤᱡ ᱛᱮ ᱜᱩᱲᱟᱹᱣ ᱵᱮᱵᱷᱟᱨ ᱢᱮ
# Document properties dialog box
-document_properties_file_name=रेतॠञà¥à¤¤à¥à¤®:
-document_properties_file_size=रेतॠमाराङ तेतà¥:
+document_properties_file_name=ᱨᱮᱫᱽ ᱧᱩᱛᱩᱢ :
+document_properties_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.
-document_properties_kb={{size_kb}} KB ({{size_b}} बाइटà¥à¤¸)
+document_properties_kb={{size_kb}} KB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ)
# 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}} बाइटà¥à¤¸)
-document_properties_title=à¤à¤® ञà¥à¤¤à¥à¤®:
-document_properties_author=ओनोलिया़:
-document_properties_subject=बिसोय:
-document_properties_keywords=का़ठी बोरà¥à¤¡:
-document_properties_creation_date=तेयार मा़हितà¥:
-document_properties_modification_date=बोदोल होचो मा़हितà¥:
+document_properties_mb={{size_mb}} MB ({{size_b}} ᱵᱟᱭᱤᱴ ᱠᱚ)
+document_properties_title=ᱧᱩᱛᱩᱢ :
+document_properties_author=ᱚᱱᱚᱞᱤᱭᱟᱹ :
+document_properties_subject=ᱵᱤᱥᱚᱭ :
+document_properties_keywords=ᱠᱟᱹᱴᱷᱤ ᱥᱟᱵᱟᱫᱽ :
+document_properties_creation_date=ᱛᱮᱭᱟᱨ ᱢᱟᱸᱦᱤᱛ :
+document_properties_modification_date=ᱵᱚᱫᱚᱞ ᱦᱚᱪᱚ ᱢᱟᱹᱦᱤᱛ :
# 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=बेनाविचà¥:
-document_properties_producer=PDF तेयार ओडोकिचà¥:
-document_properties_version=PDF बारà¥à¤¸à¤¾à¤¨:
-document_properties_page_count=साहटा लेखा:
+document_properties_creator=ᱵᱮᱱᱟᱣᱤᱡ :
+document_properties_producer=PDF ᱛᱮᱭᱟᱨ ᱚᱰᱚᱠᱤᱡ :
+document_properties_version=PDF ᱵᱷᱟᱹᱨᱥᱚᱱ :
+document_properties_page_count=ᱥᱟᱦᱴᱟ ᱞᱮᱠᱷᱟ :
+document_properties_page_size=ᱥᱟᱦᱴᱟ ᱢᱟᱯ :
+document_properties_page_size_unit_inches=ᱤᱧᱪ
+document_properties_page_size_unit_millimeters=ᱢᱤᱢᱤ
+document_properties_page_size_orientation_portrait=ᱯᱚᱴᱨᱮᱴ
+document_properties_page_size_orientation_landscape=ᱞᱮᱱᱰᱥᱠᱮᱯ
+document_properties_page_size_name_a3=A3
+document_properties_page_size_name_a4=A4
+document_properties_page_size_name_letter=ᱪᱤᱴᱷᱤ
+document_properties_page_size_name_legal=ᱠᱟᱹᱱᱩᱱᱤ
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
+document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
@@ -73,29 +115,30 @@ document_properties_page_count=साहटा लेखा:
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-document_outline_label=दोलिल तेयार तेतà¥
+document_outline_label=ᱫᱚᱞᱤᱞ ᱛᱮᱭᱟᱨ ᱛᱮᱫ
attachments.title=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ
attachments_label=ᱞᱟᱴᱷᱟ ᱥᱮᱞᱮᱫ ᱠᱚ
-thumbs.title=चिता़र आहला को उदà¥à¤—ा मे
-thumbs_label=चिता़र आहला को
-findbar.title=दोलिल रे ञाम
+thumbs.title=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ ᱩᱫᱩᱜᱽ ᱢᱮ
+thumbs_label=ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ ᱠᱚ
+findbar.title=ᱫᱚᱞᱤᱞ ᱨᱮ ᱯᱟᱱᱛᱮ
+findbar_label=ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ
# 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
# number.
-thumb_page_title=साहटा {{page}}
+thumb_page_title={{page}} ᱥᱟᱦᱴᱟ
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=साहटा रेयाकॠचिता़र आहला {{page}}
+thumb_page_canvas={{page}} ᱥᱟᱦᱴᱟ ᱨᱮᱭᱟᱜ ᱪᱤᱛᱟᱹᱨ ᱟᱦᱞᱟ
# Find panel button title and messages
-find_previous.title=आयातॠहिंस रेयाकॠपा़हिल सेदाकॠओडोकॠञाम मे
-find_next.title=आयातॠहिंस रेयाकॠइना़ तायोम ओडोकॠञाम मे
-find_highlight=जोतो उदà¥à¤•à¥ राकाब
-find_match_case_label=जोड़ मामला
-find_reached_top=दोलिल रेयाकॠचोट रे सेटेर, लातार खोन लेताड़
-find_reached_bottom=दोलिल रेयाकॠमà¥à¤šà¤¾à¤¼à¤¤à¥ रे सेटेर, चोट खोन लेताड़
+find_previous.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱯᱟᱹᱦᱤᱞ ᱥᱮᱫᱟᱜ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ
+find_next.title=ᱟᱭᱟᱛ ᱦᱤᱸᱥ ᱨᱮᱭᱟᱜ ᱤᱱᱟᱹ ᱛᱟᱭᱚᱢ ᱚᱰᱚᱠ ᱧᱟᱢ ᱢᱮ
+find_highlight=ᱡᱷᱚᱛᱚ ᱩᱫᱩᱜ ᱨᱟᱠᱟᱵ
+find_match_case_label=ᱡᱚᱲ ᱠᱟᱛᱷᱟ
+find_reached_top=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱪᱤᱴ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱞᱟᱛᱟᱨ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ
+find_reached_bottom=ᱫᱚᱞᱤᱞ ᱨᱮᱭᱟᱜ ᱢᱩᱪᱟᱹᱫ ᱨᱮ ᱥᱮᱴᱮᱨ, ᱪᱚᱴ ᱠᱷᱚᱱ ᱞᱮᱛᱟᱲ
# 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
@@ -104,38 +147,38 @@ find_reached_bottom=दोलिल रेयाकॠमà¥à¤šà¤¾à¤¼à¤¤à¥ र
# 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_not_found=आयातॠहिंस बाय ञाम लेना
+find_not_found=ᱛᱚᱯᱚᱞ ᱫᱚᱱᱚᱲ ᱵᱟᱠᱧᱟᱢ ᱞᱮᱱᱟ
# Error panel labels
-error_more_info=बाड़ती ला़य सोदोरढेर ला़य सोदोर
-error_less_info=कोम ला़य सोदोर
+error_more_info=ᱵᱟᱹᱲᱛᱤ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ
+error_less_info=ᱠᱚᱢ ᱞᱟᱹᱭ ᱥᱚᱫᱚᱨ
# 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}})
+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}}
+error_message=ᱠᱷᱚᱵᱚᱨ : {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=डांग: {{stack}}
+error_stack=ᱵᱟᱠ: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=रेतà¥: {{file}}
+error_file=ᱨᱮᱫᱽ : {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=गार: {{line}}
-rendering_error=साहटा à¤à¤® जोहोक मितॠभà¥à¤² हà¥à¤¯ à¤à¤¨à¤¾ .
+error_line=ᱜᱟᱨ : {{line}}
+rendering_error=ᱥᱟᱦᱴᱟ ᱮᱢ ᱡᱚᱦᱚᱠ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾
# Predefined zoom values
-page_scale_width=साहटा ओसार
-page_scale_fit=साहटा खाप
-page_scale_auto=आचॠआचॠते हà¥à¤¡à¤¿à¤ž ला़टॠतेयार
+page_scale_width=ᱥᱟᱦᱴᱟ ᱚᱥᱟᱨ
+page_scale_fit=ᱥᱟᱦᱴᱟ ᱠᱷᱟᱯ
+page_scale_auto=ᱟᱡᱼᱟᱡ ᱛᱮ ᱦᱩᱰᱤᱧ ᱞᱟᱹᱴᱩ ᱛᱮᱭᱟᱨ
page_scale_actual=ᱴᱷᱤᱠ ᱢᱟᱨᱟᱠᱛᱮᱫ
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
# Loading indicator messages
-loading_error=\u0020PDFलादे जोहोकॠमितॠभà¥à¤² हà¥à¤¯ à¤à¤¨à¤¾.
-invalid_file_error=बाङ बाताव आर बाङ PDF रेतà¥.
-missing_file_error=आदाकॠPDF रेतà¥.
+loading_error=PDF ᱞᱟᱫᱮ ᱡᱚᱦᱚᱜ ᱢᱤᱫ ᱵᱷᱩᱞ ᱦᱩᱭ ᱮᱱᱟ ᱾
+invalid_file_error=ᱵᱟᱠᱵᱟᱛᱟᱣ ᱟᱨᱵᱟá±á± á±·á±Ÿá±± ᱰᱤᱜᱟᱹᱣ PDF ᱨᱮᱫᱽ á±¾
+missing_file_error=ᱟᱫᱟᱜ PDF ᱨᱮᱫᱽ ᱾
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
@@ -144,11 +187,11 @@ missing_file_error=आदाकॠPDF रेतà¥.
# "{{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}} बेयान à¤à¤®]
-password_label=नोवा PDF रेतॠà¤à¤¿à¤œ ला़गितॠदानाङ साबाद आदेर मे.
-password_invalid=बाङ बातावाकॠदानाङ साबाद. दोहड़ा कà¥à¤°à¥à¤®à¥à¤Ÿà¥à¤¯ मे.
-password_ok=OK
-
-printing_not_supported=होसियार: छापा नोवा पानतेयाकॠदाराय ते पà¥à¤°à¤¾à¤¼à¤µ बाय गोड़ोवाकाना .
-printing_not_ready=होंसिया़र: छापा ला़गितॠPDF पà¥à¤°à¤¾à¤¼ बाय लादे आकाना.
-web_fonts_disabled=वेब फॉनà¥à¤Ÿ बाङ हà¥à¤¯ होचो आकाना: भितिर थापोन PDF फॉनà¥à¤Ÿà¥à¤¸ बेभार बाङ हà¥à¤¯ केया.
+text_annotation_type.alt=[{{type}} ᱢᱚᱱᱛᱚ ᱮᱢ]
+password_label=ᱱᱚᱶᱟ PDF ᱨᱮᱫᱽ ᱡᱷᱤᱡᱽ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱠᱥᱟᱵᱟᱫᱽ ᱟᱫᱮᱨ ᱢᱮ ᱾
+password_invalid=ᱵᱷᱩᱞ ᱫᱟᱱᱟᱠᱥᱟᱵᱟᱫᱽ ᱾ ᱫᱟᱭᱟᱠᱟᱛᱮ ᱫᱩᱦᱲᱟᱹ ᱪᱮᱥᱴᱟᱭ ᱢᱮ ᱾
+password_ok=ᱴᱷᱤᱠ
+
+printing_not_supported=ᱦᱚᱥᱤᱭᱟᱨ : ᱪᱷᱟᱯᱟ ᱱᱚᱣᱟ ᱯᱟᱱᱛᱮᱭᱟᱜ ᱫᱟᱨᱟᱭ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱵᱟᱭ ᱜᱚᱲᱚᱣᱟᱠᱟᱱᱟ ᱾
+printing_not_ready=ᱦᱩᱥᱤᱭᱟᱹᱨ : ᱪᱷᱟᱯᱟ ᱞᱟᱹᱜᱤᱫ PDF ᱯᱩᱨᱟᱹ ᱵᱟᱭ ᱞᱟᱫᱮ ᱟᱠᱟᱱᱟ ᱾
+web_fonts_disabled=ᱣᱮᱵᱽ ᱪᱤᱠᱤ ᱵᱟᱠᱦᱩᱭ ᱦᱚᱪᱚ ᱠᱟᱱᱟ : ᱵᱷᱤᱛᱤᱨ ᱛᱷᱟᱯᱚᱱ PDF ᱪᱤᱠᱤ ᱵᱮᱵᱷᱟᱨ ᱵᱟᱠᱦᱩᱭ ᱠᱮᱭᱟ ᱾
diff --git a/js/pdfjs/web/locale/sc/viewer.properties b/js/pdfjs/web/locale/sc/viewer.properties
index 0070222..20fa852 100644
--- a/js/pdfjs/web/locale/sc/viewer.properties
+++ b/js/pdfjs/web/locale/sc/viewer.properties
@@ -13,107 +13,225 @@
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pàgina anteriore
previous_label=S'ischeda chi b'est primu
+next.title=Pàgina imbeniente
next_label=Imbeniente
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Pàgina
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Impitica
zoom_out_label=Impitica
zoom_in.title=Ismànnia
zoom_in_label=Ismànnia
zoom.title=Ismànnia
+presentation_mode.title=Cola a sa modalidade de presentatzione
+presentation_mode_label=Modalidade de presentatzione
open_file.title=Aberi s'archìviu
open_file_label=Abertu
print.title=Imprenta
print_label=Imprenta
download.title=Iscàrriga
download_label=Iscàrriga
+bookmark.title=Visualizatzione atuale (còpia o aberi in una ventana noa)
+bookmark_label=Visualizatzione atuale
# Secondary toolbar and context menu
tools.title=Istrumentos
tools_label=Istrumentos
-
-
+first_page.title=Bae a sa prima pàgina
+first_page_label=Bae a sa prima pàgina
+last_page.title=Bae a s'ùrtima pàgina
+last_page_label=Bae a s'ùrtima pàgina
+page_rotate_cw.title=Gira in sensu oràriu
+page_rotate_cw_label=Gira in sensu oràriu
+page_rotate_ccw.title=Gira in sensu anti-oràriu
+page_rotate_ccw_label=Gira in sensu anti-oràriu
+
+cursor_text_select_tool.title=Ativa s'aina de seletzione de testu
+cursor_text_select_tool_label=Aina de seletzione de testu
+cursor_hand_tool.title=Ativa s'aina de manu
+cursor_hand_tool_label=Aina de manu
+
+scroll_page.title=Imprea s'iscurrimentu de pàgina
+scroll_page_label=Iscurrimentu de pàgina
+scroll_vertical.title=Imprea s'iscurrimentu verticale
+scroll_vertical_label=Iscurrimentu verticale
+scroll_horizontal.title=Imprea s'iscurrimentu orizontale
+scroll_horizontal_label=Iscurrimentu orizontale
+scroll_wrapped.title=Imprea s'iscurrimentu continu
+scroll_wrapped_label=Iscurrimentu continu
# Document properties dialog box
+document_properties.title=Propiedades de su documentu…
+document_properties_label=Propiedades de su documentu…
+document_properties_file_name=Nòmine de s'archìviu:
+document_properties_file_size=Mannària de s'archìviu:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+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=Tìtulu:
+document_properties_author=Autoria:
document_properties_subject=Ogetu:
+document_properties_keywords=Faeddos crae:
+document_properties_creation_date=Data de creatzione:
+document_properties_modification_date=Data de modìfica:
# 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=Creatzione:
+document_properties_producer=Produtore de PDF:
+document_properties_version=Versione de PDF:
+document_properties_page_size=Mannària de sa pàgina:
+document_properties_page_size_unit_inches=pòddighes
+document_properties_page_size_unit_millimeters=mm
+document_properties_page_size_orientation_portrait=verticale
+document_properties_page_size_orientation_landscape=orizontale
+document_properties_page_size_name_a3=A3
+document_properties_page_size_name_a4=A4
+document_properties_page_size_name_letter=Lìtera
+document_properties_page_size_name_legal=Legale
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
+document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
+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=Visualizatzione web lestra:
+document_properties_linearized_yes=Eja
+document_properties_linearized_no=Nono
document_properties_close=Serra
+print_progress_message=Aparitzende s'imprenta de su documentu…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
+print_progress_percent={{progress}}%
print_progress_close=Cantzella
# 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=Ativa/disativa sa barra laterale
+toggle_sidebar_notification2.title=Ativa/disativa sa barra laterale (su documentu cuntenet un'ischema, alligongiados o livellos)
+toggle_sidebar_label=Ativa/disativa sa barra laterale
+document_outline_label=Ischema de su documentu
+attachments.title=Ammustra alligongiados
attachments_label=Alliongiados
-
+layers.title=Ammustra livellos (clic dòpiu pro ripristinare totu is livellos a s'istadu predefinidu)
+layers_label=Livellos
+thumbs.title=Ammustra miniaturas
+thumbs_label=Miniaturas
+current_outline_item.title=Agata s'elementu atuale de s'ischema
+current_outline_item_label=Elementu atuale de s'ischema
+findbar.title=Agata in su documentu
+findbar_label=Agata
+
+additional_layers=Livellos additzionales
# 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.
+thumb_page_title=Pàgina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
+thumb_page_canvas=Miniatura de sa pàgina {{page}}
# Find panel button title and messages
+find_input.title=Agata
+find_input.placeholder=Agata in su documentu…
+find_previous.title=Agata s'ocurrèntzia pretzedente de sa fràsia
find_previous_label=S'ischeda chi b'est primu
+find_next.title=Agata s'ocurrèntzia imbeniente de sa fràsia
find_next_label=Imbeniente
+find_highlight=Evidèntzia totu
+find_match_case_label=Distinghe intre majùsculas e minùsculas
+find_match_diacritics_label=Respeta is diacrìticos
+find_entire_word_label=Faeddos intreos
+find_reached_top=S'est lòmpidu a su cumintzu de su documentu, si sighit dae su bàsciu
+find_reached_bottom=S'est lòmpidu a s'acabbu de su documentu, si sighit dae s'artu
# 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}} dae {{total}} currispondèntzia
+find_match_count[two]={{current}} dae {{total}} currispondèntzias
+find_match_count[few]={{current}} dae {{total}} currispondèntzias
+find_match_count[many]={{current}} dae {{total}} currispondèntzias
+find_match_count[other]={{current}} dae {{total}} currispondèntzias
# 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]=Prus de {{limit}} currispondèntzias
+find_match_count_limit[one]=Prus de {{limit}} currispondèntzia
+find_match_count_limit[two]=Prus de {{limit}} currispondèntzias
+find_match_count_limit[few]=Prus de {{limit}} currispondèntzias
+find_match_count_limit[many]=Prus de {{limit}} currispondèntzias
+find_match_count_limit[other]=Prus de {{limit}} currispondèntzias
+find_not_found=Testu no agatadu
# Error panel labels
+error_more_info=Àteras informatziones
+error_less_info=Prus pagu informatziones
error_close=Serra
# 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=Messàgiu: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Archìviu: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Lìnia: {{line}}
+rendering_error=Faddina in sa visualizatzione de sa pàgina.
# Predefined zoom values
+page_scale_auto=Ingrandimentu automàticu
+page_scale_actual=Mannària reale
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
+loading=Carrighende…
+loading_error=Faddina in sa càrriga de su PDF.
+invalid_file_error=Archìviu PDF non vàlidu o corrùmpidu.
+missing_file_error=Ammancat s'archìviu PDF.
# 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
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+password_label=Inserta sa crae pro abèrrere custu archìviu PDF.
password_invalid=Sa crae no est curreta. Torra·bi a proare.
password_ok=Andat bene
password_cancel=Cantzella
+printing_not_supported=Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore.
+printing_not_ready=Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta.
diff --git a/js/pdfjs/web/locale/sk/viewer.properties b/js/pdfjs/web/locale/sk/viewer.properties
index f13bf6e..d412d4b 100644
--- a/js/pdfjs/web/locale/sk/viewer.properties
+++ b/js/pdfjs/web/locale/sk/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=VyhľadaÅ¥ Äalší výskyt reÅ¥azca
find_next_label=Ďalšie
find_highlight=Zvýrazniť všetky
find_match_case_label=Rozlišovať veľkosť písmen
+find_match_diacritics_label=Rozlišovať diakritiku
find_entire_word_label=Celé slová
find_reached_top=Bol dosiahnutý zaÄiatok stránky, pokraÄuje sa od konca
find_reached_bottom=Bol dosiahnutý koniec stránky, pokraÄuje sa od zaÄiatku
diff --git a/js/pdfjs/web/locale/sl/viewer.properties b/js/pdfjs/web/locale/sl/viewer.properties
index 723f75d..8ba1228 100644
--- a/js/pdfjs/web/locale/sl/viewer.properties
+++ b/js/pdfjs/web/locale/sl/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Najdi naslednjo ponovitev iskanega
find_next_label=Najdi naprej
find_highlight=OznaÄi vse
find_match_case_label=Razlikuj velike/male Ärke
+find_match_diacritics_label=Razlikuj diakritiÄne znake
find_entire_word_label=Cele besede
find_reached_top=Dosežen zaÄetek dokumenta iz smeri konca
find_reached_bottom=Doseženo konec dokumenta iz smeri zaÄetka
diff --git a/js/pdfjs/web/locale/sv-SE/viewer.properties b/js/pdfjs/web/locale/sv-SE/viewer.properties
index a1d6fe1..dc4f480 100644
--- a/js/pdfjs/web/locale/sv-SE/viewer.properties
+++ b/js/pdfjs/web/locale/sv-SE/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Hitta nästa förekomst av frasen
find_next_label=Nästa
find_highlight=Markera alla
find_match_case_label=Matcha versal/gemen
+find_match_diacritics_label=Matcha diakritiska tecken
find_entire_word_label=Hela ord
find_reached_top=Nådde början av dokumentet, började från slutet
find_reached_bottom=Nådde slutet på dokumentet, började från början
diff --git a/js/pdfjs/web/locale/tg/viewer.properties b/js/pdfjs/web/locale/tg/viewer.properties
index 24ab96e..d38ddd3 100644
--- a/js/pdfjs/web/locale/tg/viewer.properties
+++ b/js/pdfjs/web/locale/tg/viewer.properties
@@ -14,13 +14,19 @@
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Саҳифаи қаблӣ
+previous_label=Қаблӣ
+next.title=Саҳифаи навбатӣ
+next_label=Ðавбатӣ
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Саҳифа
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
+of_pages=аз {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} аз {{pagesCount}})
zoom_out.title=Хурд кардан
zoom_out_label=Хурд кардан
@@ -38,6 +44,11 @@ bookmark_label=Ðамуди ҷорӣ
# Secondary toolbar and context menu
tools.title=Ðбзорҳо
+tools_label=Ðбзорҳо
+first_page.title=Ба Ñаҳифаи аввал гузаред
+first_page_label=Ба Ñаҳифаи аввал гузаред
+last_page.title=Ба Ñаҳифаи охирин гузаред
+last_page_label=Ба Ñаҳифаи охирин гузаред
@@ -51,6 +62,12 @@ document_properties_kb={{size_kb}} КБ ({{size_b}} байт)
# 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}} МБ ({{size_b}} байт)
+document_properties_title=Сарлавҳа:
+document_properties_author=Муаллиф:
+document_properties_subject=Мавзуъ:
+document_properties_keywords=Калимаҳои калидӣ:
+document_properties_creation_date=Санаи Ñҷод:
+document_properties_modification_date=Санаи тағйирот:
# 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}}
@@ -80,15 +97,20 @@ print_progress_close=Бекор кардан
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Фаъол кардани навори ҷонибӣ
+attachments_label=Замимаҳо
# 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
# number.
+thumb_page_title=Саҳифаи {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
# Find panel button title and messages
+find_previous_label=Қаблӣ
+find_next_label=Ðавбатӣ
+find_highlight=Ҳамаашро бо ранг ҷудо кардан
# 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
@@ -103,6 +125,7 @@ find_match_count_limit[two]=Зиёда аз {{limit}} мувофиқат
find_match_count_limit[few]=Зиёда аз {{limit}} мувофиқат
find_match_count_limit[many]=Зиёда аз {{limit}} мувофиқат
find_match_count_limit[other]=Зиёда аз {{limit}} мувофиқат
+find_not_found=Ибора ёфт нашуд
# Error panel labels
error_more_info=Маълумоти бештар
@@ -124,6 +147,7 @@ page_scale_auto=Ðндозаи худкор
# numerical scale value.
# Loading indicator messages
+loading=Бор шуда иÑтодааÑт…
invalid_file_error=Файли PDF нодуруÑÑ‚ Ñ‘ вайроншуда мебошад.
missing_file_error=Файли PDF ғоиб аÑÑ‚.
@@ -135,5 +159,6 @@ missing_file_error=Файли PDF ғоиб аÑÑ‚.
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
password_label=Барои кушодани ин файли PDF ниҳонвожаро ворид кунед.
+password_ok=ХУБ
password_cancel=Бекор кардан
diff --git a/js/pdfjs/web/locale/th/viewer.properties b/js/pdfjs/web/locale/th/viewer.properties
index c48a711..2ed55c3 100644
--- a/js/pdfjs/web/locale/th/viewer.properties
+++ b/js/pdfjs/web/locale/th/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=หาตำà¹à¸«à¸™à¹ˆà¸‡à¸–ัดไปของวลี
find_next_label=ถัดไป
find_highlight=เน้นสีทั้งหมด
find_match_case_label=ตัวพิมพ์ใหà¸à¹ˆà¹€à¸¥à¹‡à¸à¸•à¸£à¸‡à¸à¸±à¸™
+find_match_diacritics_label=เครื่องหมายà¸à¸³à¸à¸±à¸šà¸à¸²à¸£à¸­à¸­à¸à¹€à¸ªà¸µà¸¢à¸‡à¸•à¸£à¸‡à¸à¸±à¸™
find_entire_word_label=ทั้งคำ
find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจาà¸à¸”้านล่าง
find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจาà¸à¸”้านบน
diff --git a/js/pdfjs/web/locale/tr/viewer.properties b/js/pdfjs/web/locale/tr/viewer.properties
index 5d725d5..de3a06d 100644
--- a/js/pdfjs/web/locale/tr/viewer.properties
+++ b/js/pdfjs/web/locale/tr/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Sonraki eÅŸleÅŸmeyi bul
find_next_label=Sonraki
find_highlight=Tümünü vurgula
find_match_case_label=Büyük-küçük harfe duyarlı
+find_match_diacritics_label=Fonetik iÅŸaretleri bul
find_entire_word_label=Tam sözcükler
find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi
find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi
diff --git a/js/pdfjs/web/locale/uk/viewer.properties b/js/pdfjs/web/locale/uk/viewer.properties
index 546dc58..90aa9b1 100644
--- a/js/pdfjs/web/locale/uk/viewer.properties
+++ b/js/pdfjs/web/locale/uk/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Знайти наÑтупне Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ñ€Ð°Ð·Ð¸
find_next_label=ÐаÑтупне
find_highlight=ПідÑвітити вÑе
find_match_case_label=З урахуваннÑм регіÑтру
+find_match_diacritics_label=ВідповідніÑÑ‚ÑŒ діакритичних знаків
find_entire_word_label=Цілі Ñлова
find_reached_top=ДоÑÑгнуто початку документу, продовжено з кінцÑ
find_reached_bottom=ДоÑÑгнуто ÐºÑ–Ð½Ñ†Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ, продовжено з початку
diff --git a/js/pdfjs/web/locale/vi/viewer.properties b/js/pdfjs/web/locale/vi/viewer.properties
index 1f10009..0cd8194 100644
--- a/js/pdfjs/web/locale/vi/viewer.properties
+++ b/js/pdfjs/web/locale/vi/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=Tìm cụm từ ở phần sau
find_next_label=Tiếp
find_highlight=Tô sáng tất cả
find_match_case_label=Phân biệt hoa, thÆ°á»ng
+find_match_diacritics_label=Khớp dấu phụ
find_entire_word_label=Toàn bộ từ
find_reached_top=Äã đến phần đầu tài liệu, quay trở lại từ cuối
find_reached_bottom=Äã đến phần cuối của tài liệu, quay trở lại từ đầu
diff --git a/js/pdfjs/web/locale/zh-CN/viewer.properties b/js/pdfjs/web/locale/zh-CN/viewer.properties
index 55aee59..87e715c 100644
--- a/js/pdfjs/web/locale/zh-CN/viewer.properties
+++ b/js/pdfjs/web/locale/zh-CN/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=查找è¯è¯­åŽä¸€æ¬¡å‡ºçŽ°çš„ä½ç½®
find_next_label=下一页
find_highlight=全部高亮显示
find_match_case_label=区分大å°å†™
+find_match_diacritics_label=匹é…å˜éŸ³ç¬¦å·
find_entire_word_label=å­—è¯åŒ¹é…
find_reached_top=到达文档开头,从末尾继续
find_reached_bottom=到达文档末尾,从开头继续
diff --git a/js/pdfjs/web/locale/zh-TW/viewer.properties b/js/pdfjs/web/locale/zh-TW/viewer.properties
index 32da91c..4de74ee 100644
--- a/js/pdfjs/web/locale/zh-TW/viewer.properties
+++ b/js/pdfjs/web/locale/zh-TW/viewer.properties
@@ -170,6 +170,7 @@ find_next.title=尋找文字下次出ç¾çš„ä½ç½®
find_next_label=下一個
find_highlight=全部強調標示
find_match_case_label=å€åˆ†å¤§å°å¯«
+find_match_diacritics_label=符åˆè®ŠéŸ³ç¬¦è™Ÿ
find_entire_word_label=符åˆæ•´å€‹å­—
find_reached_top=å·²æœå°‹è‡³æ–‡ä»¶é ‚端,自底端繼續æœå°‹
find_reached_bottom=å·²æœå°‹è‡³æ–‡ä»¶åº•ç«¯ï¼Œè‡ªé ‚端繼續æœå°‹
diff --git a/js/pdfjs/web/viewer.css b/js/pdfjs/web/viewer.css
index 6633fd9..cd6c0a4 100644
--- a/js/pdfjs/web/viewer.css
+++ b/js/pdfjs/web/viewer.css
@@ -26,6 +26,7 @@
-webkit-text-size-adjust: none;
-moz-text-size-adjust: none;
text-size-adjust: none;
+ forced-color-adjust: none;
}
.textLayer span,
@@ -654,12 +655,12 @@
}
:root {
+ --viewer-container-height: 0;
--pdfViewer-padding-bottom: 0;
--page-margin: 1px auto -8px;
--page-border: 9px solid transparent;
--spreadHorizontalWrapped-margin-LR: -3.5px;
--zoom-factor: 1;
- --viewport-scale-factor: 1;
}
@media screen and (forced-colors: active) {
@@ -696,7 +697,7 @@
.pdfViewer .dummyPage {
position: relative;
width: 0;
- /* The height is set via JS, see `BaseViewer.#ensurePageViewVisible`. */
+ height: var(--viewer-container-height);
}
.pdfViewer.removePageBorders .page {
@@ -800,12 +801,12 @@
}
:root {
+ --dir-factor: 1;
--sidebar-width: 200px;
--sidebar-transition-duration: 200ms;
--sidebar-transition-timing-function: ease;
--scale-select-container-width: 140px;
--scale-select-overflow: 22px;
- --loadingBar-end-offset: 0;
--toolbar-icon-opacity: 0.7;
--doorhanger-icon-opacity: 0.9;
@@ -813,6 +814,8 @@
--main-color: rgba(12, 12, 13, 1);
--body-bg-color: rgba(237, 237, 240, 1);
--errorWrapper-bg-color: rgba(255, 110, 110, 1);
+ --progressBar-percent: 0%;
+ --progressBar-end-offset: 0;
--progressBar-color: rgba(10, 132, 255, 1);
--progressBar-indeterminate-bg-color: rgba(221, 221, 222, 1);
--progressBar-indeterminate-blend-color: rgba(116, 177, 239, 1);
@@ -834,7 +837,6 @@
--field-color: rgba(6, 6, 6, 1);
--field-bg-color: rgba(255, 255, 255, 1);
--field-border-color: rgba(187, 187, 188, 1);
- --findbar-nextprevious-btn-bg-color: rgba(227, 228, 230, 1);
--treeitem-color: rgba(0, 0, 0, 0.8);
--treeitem-hover-color: rgba(0, 0, 0, 0.9);
--treeitem-selected-color: rgba(0, 0, 0, 0.9);
@@ -845,9 +847,9 @@
--doorhanger-hover-color: rgba(12, 12, 13, 1);
--doorhanger-hover-bg-color: rgba(237, 237, 237, 1);
--doorhanger-separator-color: rgba(222, 222, 222, 1);
- --overlay-button-border: 0 none;
- --overlay-button-bg-color: rgba(12, 12, 13, 0.1);
- --overlay-button-hover-bg-color: rgba(12, 12, 13, 0.3);
+ --dialog-button-border: 0 none;
+ --dialog-button-bg-color: rgba(12, 12, 13, 0.1);
+ --dialog-button-hover-bg-color: rgba(12, 12, 13, 0.3);
--loading-icon: url(images/loading.svg);
--treeitem-expanded-icon: url(images/treeitem-expanded.svg);
@@ -888,6 +890,10 @@
--secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties.svg);
}
+[dir="rtl"]:root {
+ --dir-factor: -1;
+}
+
@media (prefers-color-scheme: dark) {
:root {
--main-color: rgba(249, 249, 250, 1);
@@ -914,7 +920,6 @@
--field-color: rgba(250, 250, 250, 1);
--field-bg-color: rgba(64, 64, 68, 1);
--field-border-color: rgba(115, 115, 115, 1);
- --findbar-nextprevious-btn-bg-color: rgba(89, 89, 89, 1);
--treeitem-color: rgba(255, 255, 255, 0.8);
--treeitem-hover-color: rgba(255, 255, 255, 0.9);
--treeitem-selected-color: rgba(255, 255, 255, 0.9);
@@ -925,8 +930,8 @@
--doorhanger-hover-color: rgba(249, 249, 250, 1);
--doorhanger-hover-bg-color: rgba(93, 94, 98, 1);
--doorhanger-separator-color: rgba(92, 92, 97, 1);
- --overlay-button-bg-color: rgba(92, 92, 97, 1);
- --overlay-button-hover-bg-color: rgba(115, 115, 115, 1);
+ --dialog-button-bg-color: rgba(92, 92, 97, 1);
+ --dialog-button-hover-bg-color: rgba(115, 115, 115, 1);
/* This image is used in <input> elements, which unfortunately means that
* the `mask-image` approach used with all of the other images doesn't work
@@ -947,9 +952,9 @@
--doorhanger-hover-color: ButtonFace;
--doorhanger-border-color-whcm: 1px solid ButtonText;
--doorhanger-triangle-opacity-whcm: 0;
- --overlay-button-border: 1px solid Highlight;
- --overlay-button-hover-bg-color: Highlight;
- --overlay-button-hover-color: ButtonFace;
+ --dialog-button-border: 1px solid Highlight;
+ --dialog-button-hover-bg-color: Highlight;
+ --dialog-button-hover-color: ButtonFace;
--field-border-color: ButtonText;
}
}
@@ -959,14 +964,13 @@
margin: 0;
}
-html {
+html,
+body {
height: 100%;
width: 100%;
}
body {
- height: 100%;
- width: 100%;
background-color: var(--body-bg-color);
}
@@ -979,9 +983,7 @@ select {
scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
}
-.hidden {
- display: none !important;
-}
+.hidden,
[hidden] {
display: none !important;
}
@@ -1036,47 +1038,59 @@ select {
position: relative;
}
+[dir="ltr"] #sidebarContainer {
+ left: calc(-1 * var(--sidebar-width));
+}
+
+[dir="rtl"] #sidebarContainer {
+ right: calc(-1 * var(--sidebar-width));
+}
+
+[dir="ltr"] #sidebarContainer {
+ border-right: var(--doorhanger-border-color-whcm);
+}
+
+[dir="rtl"] #sidebarContainer {
+ border-left: var(--doorhanger-border-color-whcm);
+}
+
+[dir="ltr"] #sidebarContainer {
+ transition-property: left;
+}
+
+[dir="rtl"] #sidebarContainer {
+ transition-property: right;
+}
+
#sidebarContainer {
position: absolute;
top: 32px;
bottom: 0;
+ inset-inline-start: calc(-1 * var(--sidebar-width));
width: var(--sidebar-width);
visibility: hidden;
z-index: 100;
border-top: 1px solid rgba(51, 51, 51, 1);
+ -webkit-border-end: var(--doorhanger-border-color-whcm);
+ border-inline-end: var(--doorhanger-border-color-whcm);
+ transition-property: inset-inline-start;
transition-duration: var(--sidebar-transition-duration);
transition-timing-function: var(--sidebar-transition-timing-function);
}
-html[dir="ltr"] #sidebarContainer {
- transition-property: left;
- left: calc(0px - var(--sidebar-width));
- border-right: var(--doorhanger-border-color-whcm);
-}
-html[dir="rtl"] #sidebarContainer {
- transition-property: right;
- right: calc(0px - var(--sidebar-width));
- border-left: var(--doorhanger-border-color-whcm);
-}
-
-#outerContainer.sidebarResizing #sidebarContainer {
- /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
- transition-duration: 0s;
- /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */
- -webkit-user-select: none;
- -moz-user-select: none;
- user-select: none;
-}
#outerContainer.sidebarMoving #sidebarContainer,
#outerContainer.sidebarOpen #sidebarContainer {
visibility: visible;
}
-html[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer {
+[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer {
left: 0;
}
-html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer {
+[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer {
right: 0;
}
+#outerContainer.sidebarOpen #sidebarContainer {
+ inset-inline-start: 0;
+}
#mainContainer {
position: absolute;
@@ -1087,27 +1101,27 @@ html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer {
min-width: 320px;
}
+[dir="ltr"] #sidebarContent {
+ left: 0;
+}
+
+[dir="rtl"] #sidebarContent {
+ right: 0;
+}
+
#sidebarContent {
top: 32px;
bottom: 0;
+ inset-inline-start: 0;
overflow: auto;
- -webkit-overflow-scrolling: touch;
position: absolute;
width: 100%;
background-color: rgba(0, 0, 0, 0.1);
-}
-html[dir="ltr"] #sidebarContent {
- left: 0;
- box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25);
-}
-html[dir="rtl"] #sidebarContent {
- right: 0;
- box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25);
+ box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25);
}
#viewerContainer {
overflow: auto;
- -webkit-overflow-scrolling: touch;
position: absolute;
top: 32px;
right: 0;
@@ -1120,22 +1134,25 @@ html[dir="rtl"] #sidebarContent {
transition-timing-function: var(--sidebar-transition-timing-function);
}
-#outerContainer.sidebarResizing #viewerContainer {
- /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
- transition-duration: 0s;
+[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ left: var(--sidebar-width);
+}
+
+[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ right: var(--sidebar-width);
}
-html[dir="ltr"]
- #outerContainer.sidebarOpen
- #viewerContainer:not(.pdfPresentationMode) {
+[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
transition-property: left;
- left: var(--sidebar-width);
}
-html[dir="rtl"]
- #outerContainer.sidebarOpen
- #viewerContainer:not(.pdfPresentationMode) {
+
+[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
transition-property: right;
- right: var(--sidebar-width);
+}
+
+#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
+ inset-inline-start: var(--sidebar-width);
+ transition-property: inset-inline-start;
}
.toolbar {
@@ -1154,44 +1171,27 @@ html[dir="rtl"]
width: 100%;
height: 32px;
background-color: var(--sidebar-toolbar-bg-color);
-}
-html[dir="ltr"] #toolbarSidebar {
- box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(0, 0, 0, 0.15),
- 0 0 1px rgba(0, 0, 0, 0.1);
-}
-html[dir="rtl"] #toolbarSidebar {
- box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(0, 0, 0, 0.15),
- 0 0 1px rgba(0, 0, 0, 0.1);
+ box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgba(0, 0, 0, 0.25),
+ 0 1px 0 rgba(0, 0, 0, 0.15), 0 0 1px rgba(0, 0, 0, 0.1);
}
-html[dir="ltr"] #toolbarSidebar .toolbarButton {
- margin-right: 2px !important;
-}
-html[dir="rtl"] #toolbarSidebar .toolbarButton {
- margin-left: 2px !important;
+[dir="ltr"] #sidebarResizer {
+ right: -6px;
}
-html[dir="ltr"] #toolbarSidebarRight .toolbarButton {
- margin-right: 3px !important;
-}
-html[dir="rtl"] #toolbarSidebarRight .toolbarButton {
- margin-left: 3px !important;
+[dir="rtl"] #sidebarResizer {
+ left: -6px;
}
#sidebarResizer {
position: absolute;
top: 0;
bottom: 0;
+ inset-inline-end: -6px;
width: 6px;
z-index: 200;
cursor: ew-resize;
}
-html[dir="ltr"] #sidebarResizer {
- right: -6px;
-}
-html[dir="rtl"] #sidebarResizer {
- left: -6px;
-}
#toolbarContainer,
.findbar,
@@ -1206,43 +1206,52 @@ html[dir="rtl"] #sidebarResizer {
height: 32px;
}
+[dir="ltr"] #loadingBar {
+ left: 0;
+ right: var(--progressBar-end-offset);
+}
+
+[dir="rtl"] #loadingBar {
+ right: 0;
+ left: var(--progressBar-end-offset);
+}
+
+[dir="ltr"] #loadingBar {
+ transition-property: left;
+}
+
+[dir="rtl"] #loadingBar {
+ transition-property: right;
+}
+
#loadingBar {
position: absolute;
+ inset-inline: 0 var(--progressBar-end-offset);
height: 4px;
background-color: var(--body-bg-color);
border-bottom: 1px solid var(--toolbar-border-color);
-
+ transition-property: inset-inline-start;
transition-duration: var(--sidebar-transition-duration);
transition-timing-function: var(--sidebar-transition-timing-function);
}
-html[dir="ltr"] #loadingBar {
- transition-property: left;
- left: 0;
- right: var(--loadingBar-end-offset);
-}
-html[dir="rtl"] #loadingBar {
- transition-property: right;
- left: var(--loadingBar-end-offset);
- right: 0;
-}
-html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar {
+[dir="ltr"] #outerContainer.sidebarOpen #loadingBar {
left: var(--sidebar-width);
}
-html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
+
+[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
right: var(--sidebar-width);
}
-#outerContainer.sidebarResizing #loadingBar {
- /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
- transition-duration: 0s;
+#outerContainer.sidebarOpen #loadingBar {
+ inset-inline-start: var(--sidebar-width);
}
#loadingBar .progress {
position: absolute;
top: 0;
left: 0;
- width: 0%;
+ width: var(--progressBar-percent);
height: 100%;
background-color: var(--progressBar-color);
overflow: hidden;
@@ -1268,6 +1277,7 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
}
#loadingBar .progress.indeterminate {
+ width: 100%;
background-color: var(--progressBar-indeterminate-bg-color);
transition: none;
}
@@ -1291,13 +1301,19 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
animation: progressIndeterminate 1s linear infinite;
}
+#outerContainer.sidebarResizing #sidebarContainer,
+#outerContainer.sidebarResizing #viewerContainer,
+#outerContainer.sidebarResizing #loadingBar {
+ /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
+ transition-duration: 0s;
+}
+
.findbar,
.secondaryToolbar {
top: 32px;
position: absolute;
z-index: 10000;
height: auto;
- min-width: 16px;
padding: 0 4px;
margin: 4px 2px;
color: rgba(217, 217, 217, 1);
@@ -1307,62 +1323,38 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
cursor: default;
}
-.findbar {
- min-width: 300px;
- background-color: var(--toolbar-bg-color);
-}
-.findbar > div {
- height: 32px;
-}
-.findbar.wrapContainers > div {
- clear: both;
-}
-.findbar.wrapContainers > div.findbarMessageContainer {
- height: auto;
-}
-html[dir="ltr"] .findbar {
+[dir="ltr"] .findbar {
left: 64px;
}
-html[dir="rtl"] .findbar {
+
+[dir="rtl"] .findbar {
right: 64px;
}
-.findbar .splitToolbarButton {
- margin-top: 3px;
+.findbar {
+ inset-inline-start: 64px;
+ min-width: 300px;
+ background-color: var(--toolbar-bg-color);
}
-html[dir="ltr"] .findbar .splitToolbarButton {
- margin-left: 0;
- margin-right: 5px;
+.findbar > div {
+ height: 32px;
}
-html[dir="rtl"] .findbar .splitToolbarButton {
- margin-left: 5px;
- margin-right: 0;
+[dir="ltr"] .findbar > div#findbarInputContainer {
+ margin-right: 4px;
}
-
-.findbar .splitToolbarButton > .toolbarButton {
- background-color: var(--findbar-nextprevious-btn-bg-color);
- border-radius: 0;
- height: 26px;
- border-top: 1px solid var(--field-border-color);
- border-bottom: 1px solid var(--field-border-color);
+[dir="rtl"] .findbar > div#findbarInputContainer {
+ margin-left: 4px;
}
-
-.findbar .splitToolbarButton > .toolbarButton::before {
- top: 5px;
+.findbar > div#findbarInputContainer {
+ -webkit-margin-end: 4px;
+ margin-inline-end: 4px;
}
-
-.findbar .splitToolbarButton > .findNext {
- width: 29px;
-}
-html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
- border-bottom-right-radius: 2px;
- border-top-right-radius: 2px;
- border-right: 1px solid var(--field-border-color);
+.findbar.wrapContainers > div,
+.findbar.wrapContainers > div#findbarMessageContainer > * {
+ clear: both;
}
-html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
- border-bottom-left-radius: 2px;
- border-top-left-radius: 2px;
- border-left: 1px solid var(--field-border-color);
+.findbar.wrapContainers > div#findbarMessageContainer {
+ height: auto;
}
.findbar input[type="checkbox"] {
@@ -1381,15 +1373,6 @@ html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
background-color: var(--button-hover-color);
}
-html[dir="ltr"] #findInput {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-html[dir="rtl"] #findInput {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-
.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel {
background-color: var(--toggled-btn-bg-color) !important;
color: var(--toggled-btn-color);
@@ -1407,33 +1390,33 @@ html[dir="rtl"] #findInput {
#findInput[data-status="pending"] {
background-image: var(--loading-icon);
background-repeat: no-repeat;
- background-position: 98%;
-}
-html[dir="rtl"] #findInput[data-status="pending"] {
- background-position: 3px;
+ background-position: calc(50% + 48% * var(--dir-factor));
}
#findInput[data-status="notFound"] {
background-color: rgba(255, 102, 102, 1);
}
+[dir="ltr"] .secondaryToolbar {
+ right: 4px;
+}
+
+[dir="rtl"] .secondaryToolbar {
+ left: 4px;
+}
+
.secondaryToolbar {
padding: 6px 0 10px;
+ inset-inline-end: 4px;
height: auto;
z-index: 30000;
background-color: var(--doorhanger-bg-color);
}
-html[dir="ltr"] .secondaryToolbar {
- right: 4px;
-}
-html[dir="rtl"] .secondaryToolbar {
- left: 4px;
-}
#secondaryToolbarButtonContainer {
max-width: 220px;
- max-height: 400px;
+ min-height: 26px;
+ max-height: calc(var(--viewer-container-height) - 40px);
overflow-y: auto;
- -webkit-overflow-scrolling: touch;
margin-bottom: -4px;
}
@@ -1449,7 +1432,7 @@ html[dir="rtl"] .secondaryToolbar {
.doorHangerRight:after,
.doorHangerRight:before {
bottom: 100%;
- border: solid rgba(0, 0, 0, 0);
+ border: 8px solid rgba(0, 0, 0, 0);
content: " ";
height: 0;
width: 0;
@@ -1457,14 +1440,40 @@ html[dir="rtl"] .secondaryToolbar {
pointer-events: none;
opacity: var(--doorhanger-triangle-opacity-whcm);
}
-.doorHanger:after,
-.doorHangerRight:after {
- border-width: 8px;
+[dir="ltr"] .doorHanger:after {
+ left: 10px;
+}
+[dir="rtl"] .doorHanger:after {
+ right: 10px;
+}
+[dir="ltr"] .doorHanger:after {
+ margin-left: -8px;
+}
+[dir="rtl"] .doorHanger:after {
+ margin-right: -8px;
}
.doorHanger:after {
+ inset-inline-start: 10px;
+ -webkit-margin-start: -8px;
+ margin-inline-start: -8px;
border-bottom-color: var(--toolbar-bg-color);
}
+[dir="ltr"] .doorHangerRight:after {
+ right: 10px;
+}
+[dir="rtl"] .doorHangerRight:after {
+ left: 10px;
+}
+[dir="ltr"] .doorHangerRight:after {
+ margin-right: -8px;
+}
+[dir="rtl"] .doorHangerRight:after {
+ margin-left: -8px;
+}
.doorHangerRight:after {
+ inset-inline-end: 10px;
+ -webkit-margin-end: -8px;
+ margin-inline-end: -8px;
border-bottom-color: var(--doorhanger-bg-color);
}
.doorHanger:before,
@@ -1472,30 +1481,40 @@ html[dir="rtl"] .secondaryToolbar {
border-bottom-color: var(--doorhanger-border-color);
border-width: 9px;
}
-
-html[dir="ltr"] .doorHanger:after,
-html[dir="rtl"] .doorHangerRight:after {
+[dir="ltr"] .doorHanger:before {
left: 10px;
- margin-left: -8px;
}
-
-html[dir="ltr"] .doorHanger:before,
-html[dir="rtl"] .doorHangerRight:before {
- left: 10px;
+[dir="rtl"] .doorHanger:before {
+ right: 10px;
+}
+[dir="ltr"] .doorHanger:before {
margin-left: -9px;
}
-
-html[dir="rtl"] .doorHanger:after,
-html[dir="ltr"] .doorHangerRight:after {
- right: 10px;
- margin-right: -8px;
+[dir="rtl"] .doorHanger:before {
+ margin-right: -9px;
}
-
-html[dir="rtl"] .doorHanger:before,
-html[dir="ltr"] .doorHangerRight:before {
+.doorHanger:before {
+ inset-inline-start: 10px;
+ -webkit-margin-start: -9px;
+ margin-inline-start: -9px;
+}
+[dir="ltr"] .doorHangerRight:before {
right: 10px;
+}
+[dir="rtl"] .doorHangerRight:before {
+ left: 10px;
+}
+[dir="ltr"] .doorHangerRight:before {
margin-right: -9px;
}
+[dir="rtl"] .doorHangerRight:before {
+ margin-left: -9px;
+}
+.doorHangerRight:before {
+ inset-inline-end: 10px;
+ -webkit-margin-end: -9px;
+ margin-inline-end: -9px;
+}
#findResultsCount {
background-color: rgba(217, 217, 217, 1);
@@ -1520,65 +1539,125 @@ html[dir="ltr"] .doorHangerRight:before {
transform: translateX(-50%);
}
-html[dir="ltr"] #toolbarViewerLeft,
-html[dir="rtl"] #toolbarViewerRight,
-html[dir="ltr"] #toolbarSidebarLeft,
-html[dir="rtl"] #toolbarSidebarRight {
+[dir="ltr"] #toolbarViewerLeft,[dir="ltr"]
+#toolbarSidebarLeft {
float: left;
}
-html[dir="ltr"] #toolbarViewerRight,
-html[dir="rtl"] #toolbarViewerLeft,
-html[dir="ltr"] #toolbarSidebarRight,
-html[dir="rtl"] #toolbarSidebarLeft {
+
+[dir="rtl"] #toolbarViewerLeft,[dir="rtl"]
+#toolbarSidebarLeft {
float: right;
}
-html[dir="ltr"] #toolbarViewerLeft > *,
-html[dir="ltr"] #toolbarViewerMiddle > *,
-html[dir="ltr"] #toolbarViewerRight > *,
-html[dir="ltr"] #toolbarSidebarLeft *,
-html[dir="ltr"] #toolbarSidebarRight *,
-html[dir="ltr"] .findbar * {
- position: relative;
+
+#toolbarViewerLeft,
+#toolbarSidebarLeft {
+ float: inline-start;
+}
+[dir="ltr"] #toolbarViewerRight,[dir="ltr"]
+#toolbarSidebarRight {
+ float: right;
+}
+[dir="rtl"] #toolbarViewerRight,[dir="rtl"]
+#toolbarSidebarRight {
float: left;
}
-html[dir="rtl"] #toolbarViewerLeft > *,
-html[dir="rtl"] #toolbarViewerMiddle > *,
-html[dir="rtl"] #toolbarViewerRight > *,
-html[dir="rtl"] #toolbarSidebarLeft *,
-html[dir="rtl"] #toolbarSidebarRight *,
-html[dir="rtl"] .findbar * {
- position: relative;
+#toolbarViewerRight,
+#toolbarSidebarRight {
+ float: inline-end;
+}
+
+[dir="ltr"] #toolbarViewerLeft > *,[dir="ltr"]
+#toolbarViewerMiddle > *,[dir="ltr"]
+#toolbarViewerRight > *,[dir="ltr"]
+#toolbarSidebarLeft *,[dir="ltr"]
+#toolbarSidebarRight *,[dir="ltr"]
+.findbar * {
+ float: left;
+}
+
+[dir="rtl"] #toolbarViewerLeft > *,[dir="rtl"]
+#toolbarViewerMiddle > *,[dir="rtl"]
+#toolbarViewerRight > *,[dir="rtl"]
+#toolbarSidebarLeft *,[dir="rtl"]
+#toolbarSidebarRight *,[dir="rtl"]
+.findbar * {
float: right;
}
+#toolbarViewerLeft > *,
+#toolbarViewerMiddle > *,
+#toolbarViewerRight > *,
+#toolbarSidebarLeft *,
+#toolbarSidebarRight *,
+.findbar * {
+ position: relative;
+ float: inline-start;
+}
+
+[dir="ltr"] #toolbarViewerLeft {
+ padding-left: 1px;
+}
+
+[dir="rtl"] #toolbarViewerLeft {
+ padding-right: 1px;
+}
+
+#toolbarViewerLeft {
+ -webkit-padding-start: 1px;
+ padding-inline-start: 1px;
+}
+[dir="ltr"] #toolbarViewerRight {
+ padding-right: 1px;
+}
+[dir="rtl"] #toolbarViewerRight {
+ padding-left: 1px;
+}
+#toolbarViewerRight {
+ -webkit-padding-end: 1px;
+ padding-inline-end: 1px;
+}
+[dir="ltr"] #toolbarSidebarRight {
+ padding-right: 2px;
+}
+[dir="rtl"] #toolbarSidebarRight {
+ padding-left: 2px;
+}
+#toolbarSidebarRight {
+ -webkit-padding-end: 2px;
+ padding-inline-end: 2px;
+}
+
.splitToolbarButton {
- margin: 2px 2px 0;
+ margin: 2px;
display: inline-block;
}
-html[dir="ltr"] .splitToolbarButton > .toolbarButton {
+[dir="ltr"] .splitToolbarButton > .toolbarButton {
float: left;
}
-html[dir="rtl"] .splitToolbarButton > .toolbarButton {
+[dir="rtl"] .splitToolbarButton > .toolbarButton {
float: right;
}
+.splitToolbarButton > .toolbarButton {
+ float: inline-start;
+}
.toolbarButton,
.secondaryToolbarButton,
-.overlayButton {
+.dialogButton {
border: 0 none;
background: none;
width: 28px;
height: 28px;
}
-.overlayButton:hover,
-.overlayButton:focus-visible {
- background-color: var(--overlay-button-hover-bg-color);
+.dialogButton:hover,
+.dialogButton:focus-visible {
+ background-color: var(--dialog-button-hover-bg-color);
}
-.overlayButton:hover > span,
-.overlayButton:focus-visible > span {
- color: var(--overlay-button-hover-color);
+.dialogButton:hover > span,
+.dialogButton:focus-visible > span {
+ color: var(--dialog-button-hover-color);
}
.toolbarButton > span {
@@ -1590,59 +1669,50 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
.toolbarButton[disabled],
.secondaryToolbarButton[disabled],
-.overlayButton[disabled] {
+.dialogButton[disabled] {
opacity: 0.5;
}
-.splitToolbarButton.toggled .toolbarButton {
- margin: 0;
-}
-
.splitToolbarButton > .toolbarButton:hover,
.splitToolbarButton > .toolbarButton:focus-visible,
-.dropdownToolbarButton:hover,
-.toolbarButton.textButton:hover,
-.toolbarButton.textButton:focus-visible {
+.dropdownToolbarButton:hover {
background-color: var(--button-hover-color);
- z-index: 199;
}
.splitToolbarButton > .toolbarButton {
position: relative;
-}
-html[dir="ltr"] .splitToolbarButton > .toolbarButton:first-child,
-html[dir="rtl"] .splitToolbarButton > .toolbarButton:last-child {
margin: 0;
}
-html[dir="ltr"] .splitToolbarButton > .toolbarButton:last-child,
-html[dir="rtl"] .splitToolbarButton > .toolbarButton:first-child {
- margin: 0;
+[dir="ltr"] #toolbarSidebar .splitToolbarButton > .toolbarButton {
+ margin-right: 2px;
}
-.splitToolbarButtonSeparator {
- padding: 10px 0;
- width: 1px;
- background-color: var(--separator-color);
- z-index: 99;
- display: inline-block;
- margin: 4px 0;
+[dir="rtl"] #toolbarSidebar .splitToolbarButton > .toolbarButton {
+ margin-left: 2px;
}
-
-.findbar .splitToolbarButtonSeparator {
- background-color: var(--field-border-color);
- margin: 0;
- padding: 13px 0;
+#toolbarSidebar .splitToolbarButton > .toolbarButton {
+ -webkit-margin-end: 2px;
+ margin-inline-end: 2px;
}
-html[dir="ltr"] .splitToolbarButtonSeparator {
+[dir="ltr"] .splitToolbarButtonSeparator {
float: left;
}
-html[dir="rtl"] .splitToolbarButtonSeparator {
+
+[dir="rtl"] .splitToolbarButtonSeparator {
float: right;
}
+.splitToolbarButtonSeparator {
+ float: inline-start;
+ margin: 4px 0;
+ width: 1px;
+ height: 20px;
+ background-color: var(--separator-color);
+}
+
.toolbarButton,
.dropdownToolbarButton,
.secondaryToolbarButton,
-.overlayButton {
+.dialogButton {
min-width: 16px;
margin: 2px 1px;
padding: 2px 6px 0;
@@ -1658,15 +1728,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
box-sizing: border-box;
}
-html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child,
-html[dir="rtl"] #toolbarViewerRight > .toolbarButton:last-child {
- margin-left: 2px;
-}
-
-html[dir="ltr"] #toolbarViewerRight > .toolbarButton:last-child,
-html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
- margin-right: 2px;
-}
.toolbarButton:hover,
.toolbarButton:focus-visible {
background-color: var(--button-hover-color);
@@ -1684,14 +1745,11 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
color: var(--toggled-btn-color);
}
+.toolbarButton.toggled::before,
.secondaryToolbarButton.toggled::before {
background-color: var(--toggled-btn-color);
}
-.toolbarButton.toggled::before {
- background-color: var(--toggled-btn-color);
-}
-
.toolbarButton.toggled:hover:active,
.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active,
.secondaryToolbarButton.toggled:hover:active {
@@ -1703,57 +1761,53 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
padding: 0;
overflow: hidden;
background-color: var(--dropdown-btn-bg-color);
- margin-top: 2px !important;
+}
+[dir="ltr"] .dropdownToolbarButton::after {
+ right: 7px;
+}
+[dir="rtl"] .dropdownToolbarButton::after {
+ left: 7px;
}
.dropdownToolbarButton::after {
top: 6px;
+ inset-inline-end: 7px;
pointer-events: none;
-
-webkit-mask-image: var(--toolbarButton-menuArrow-icon);
- mask-image: var(--toolbarButton-menuArrow-icon);
+ mask-image: var(--toolbarButton-menuArrow-icon);
}
-html[dir="ltr"] .dropdownToolbarButton::after {
- right: 7px;
+
+[dir="ltr"] .dropdownToolbarButton > select {
+ padding-left: 4px;
}
-html[dir="rtl"] .dropdownToolbarButton::after {
- left: 7px;
+
+[dir="rtl"] .dropdownToolbarButton > select {
+ padding-right: 4px;
}
.dropdownToolbarButton > select {
- width: calc(var(--scale-select-container-width) + var(--scale-select-overflow));
+ width: calc(
+ var(--scale-select-container-width) + var(--scale-select-overflow)
+ );
height: 28px;
font-size: 12px;
color: var(--main-color);
margin: 0;
padding: 1px 0 2px;
+ -webkit-padding-start: 4px;
+ padding-inline-start: 4px;
border: none;
background-color: var(--dropdown-btn-bg-color);
}
-html[dir="ltr"] .dropdownToolbarButton > select {
- padding-left: 4px;
-}
-html[dir="rtl"] .dropdownToolbarButton > select {
- padding-right: 4px;
-}
.dropdownToolbarButton > select:hover,
.dropdownToolbarButton > select:focus-visible {
background-color: var(--button-hover-color);
color: var(--toggled-btn-color);
}
-
.dropdownToolbarButton > select > option {
background: var(--doorhanger-bg-color);
color: var(--main-color);
}
-#customScaleOption {
- display: none;
-}
-
-#pageWidthOption {
- border-bottom: 1px rgba(255, 255, 255, 0.5) solid;
-}
-
.toolbarButtonSpacer {
width: 30px;
display: inline-block;
@@ -1774,7 +1828,7 @@ html[dir="rtl"] .dropdownToolbarButton > select {
content: "";
background-color: var(--toolbar-icon-bg-color);
-webkit-mask-size: cover;
- mask-size: cover;
+ mask-size: cover;
}
.dropdownToolbarButton:hover::after,
@@ -1796,143 +1850,147 @@ html[dir="rtl"] .dropdownToolbarButton > select {
background-color: var(--toolbar-icon-hover-bg-color);
}
-.secondaryToolbarButton::before {
- opacity: var(--doorhanger-icon-opacity);
- top: 5px;
-}
-html[dir="ltr"] .secondaryToolbarButton::before {
+[dir="ltr"] .secondaryToolbarButton::before {
left: 12px;
}
-html[dir="rtl"] .secondaryToolbarButton::before {
+
+[dir="rtl"] .secondaryToolbarButton::before {
right: 12px;
}
-.toolbarButton#sidebarToggle::before {
- -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon);
- mask-image: var(--toolbarButton-sidebarToggle-icon);
+.secondaryToolbarButton::before {
+ opacity: var(--doorhanger-icon-opacity);
+ top: 5px;
+ inset-inline-start: 12px;
}
-html[dir="rtl"] .toolbarButton#sidebarToggle::before {
- transform: scaleX(-1);
+
+#sidebarToggle::before {
+ -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon);
+ mask-image: var(--toolbarButton-sidebarToggle-icon);
+ transform: scaleX(var(--dir-factor));
}
-.toolbarButton#secondaryToolbarToggle::before {
+#secondaryToolbarToggle::before {
-webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
- mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
-}
-html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
- transform: scaleX(-1);
+ mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
+ transform: scaleX(var(--dir-factor));
}
-.toolbarButton.findPrevious::before {
+#findPrevious::before {
-webkit-mask-image: var(--findbarButton-previous-icon);
- mask-image: var(--findbarButton-previous-icon);
+ mask-image: var(--findbarButton-previous-icon);
}
-.toolbarButton.findNext::before {
+#findNext::before {
-webkit-mask-image: var(--findbarButton-next-icon);
- mask-image: var(--findbarButton-next-icon);
+ mask-image: var(--findbarButton-next-icon);
}
-.toolbarButton.pageUp::before {
+#previous::before {
-webkit-mask-image: var(--toolbarButton-pageUp-icon);
- mask-image: var(--toolbarButton-pageUp-icon);
+ mask-image: var(--toolbarButton-pageUp-icon);
}
-.toolbarButton.pageDown::before {
+#next::before {
-webkit-mask-image: var(--toolbarButton-pageDown-icon);
- mask-image: var(--toolbarButton-pageDown-icon);
+ mask-image: var(--toolbarButton-pageDown-icon);
}
-.toolbarButton.zoomOut::before {
+#zoomOut::before {
-webkit-mask-image: var(--toolbarButton-zoomOut-icon);
- mask-image: var(--toolbarButton-zoomOut-icon);
+ mask-image: var(--toolbarButton-zoomOut-icon);
}
-.toolbarButton.zoomIn::before {
+#zoomIn::before {
-webkit-mask-image: var(--toolbarButton-zoomIn-icon);
- mask-image: var(--toolbarButton-zoomIn-icon);
+ mask-image: var(--toolbarButton-zoomIn-icon);
}
-.toolbarButton.presentationMode::before,
-.secondaryToolbarButton.presentationMode::before {
+#presentationMode::before,
+#secondaryPresentationMode::before {
-webkit-mask-image: var(--toolbarButton-presentationMode-icon);
- mask-image: var(--toolbarButton-presentationMode-icon);
+ mask-image: var(--toolbarButton-presentationMode-icon);
}
-.toolbarButton.print::before,
-.secondaryToolbarButton.print::before {
+#print::before,
+#secondaryPrint::before {
-webkit-mask-image: var(--toolbarButton-print-icon);
- mask-image: var(--toolbarButton-print-icon);
+ mask-image: var(--toolbarButton-print-icon);
}
-.toolbarButton.openFile::before,
-.secondaryToolbarButton.openFile::before {
+#openFile::before,
+#secondaryOpenFile::before {
-webkit-mask-image: var(--toolbarButton-openFile-icon);
- mask-image: var(--toolbarButton-openFile-icon);
+ mask-image: var(--toolbarButton-openFile-icon);
}
-.toolbarButton.download::before,
-.secondaryToolbarButton.download::before {
+#download::before,
+#secondaryDownload::before {
-webkit-mask-image: var(--toolbarButton-download-icon);
- mask-image: var(--toolbarButton-download-icon);
+ mask-image: var(--toolbarButton-download-icon);
}
-.secondaryToolbarButton.bookmark {
+a.secondaryToolbarButton {
padding-top: 6px;
text-decoration: none;
}
-
-.bookmark[href="#"] {
+a.toolbarButton[href="#"],
+a.secondaryToolbarButton[href="#"] {
opacity: 0.5;
pointer-events: none;
}
-.toolbarButton.bookmark::before,
-.secondaryToolbarButton.bookmark::before {
+#viewBookmark::before,
+#secondaryViewBookmark::before {
-webkit-mask-image: var(--toolbarButton-bookmark-icon);
- mask-image: var(--toolbarButton-bookmark-icon);
+ mask-image: var(--toolbarButton-bookmark-icon);
}
-#viewThumbnail.toolbarButton::before {
+#viewThumbnail::before {
-webkit-mask-image: var(--toolbarButton-viewThumbnail-icon);
- mask-image: var(--toolbarButton-viewThumbnail-icon);
+ mask-image: var(--toolbarButton-viewThumbnail-icon);
}
-#viewOutline.toolbarButton::before {
+#viewOutline::before {
-webkit-mask-image: var(--toolbarButton-viewOutline-icon);
- mask-image: var(--toolbarButton-viewOutline-icon);
-}
-html[dir="rtl"] #viewOutline.toolbarButton::before {
- transform: scaleX(-1);
+ mask-image: var(--toolbarButton-viewOutline-icon);
+ transform: scaleX(var(--dir-factor));
}
-#viewAttachments.toolbarButton::before {
+#viewAttachments::before {
-webkit-mask-image: var(--toolbarButton-viewAttachments-icon);
- mask-image: var(--toolbarButton-viewAttachments-icon);
+ mask-image: var(--toolbarButton-viewAttachments-icon);
}
-#viewLayers.toolbarButton::before {
+#viewLayers::before {
-webkit-mask-image: var(--toolbarButton-viewLayers-icon);
- mask-image: var(--toolbarButton-viewLayers-icon);
+ mask-image: var(--toolbarButton-viewLayers-icon);
}
-#currentOutlineItem.toolbarButton::before {
+#currentOutlineItem::before {
-webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon);
- mask-image: var(--toolbarButton-currentOutlineItem-icon);
-}
-html[dir="rtl"] #currentOutlineItem.toolbarButton::before {
- transform: scaleX(-1);
+ mask-image: var(--toolbarButton-currentOutlineItem-icon);
+ transform: scaleX(var(--dir-factor));
}
-#viewFind.toolbarButton::before {
+#viewFind::before {
-webkit-mask-image: var(--toolbarButton-search-icon);
- mask-image: var(--toolbarButton-search-icon);
+ mask-image: var(--toolbarButton-search-icon);
+}
+
+[dir="ltr"] .pdfSidebarNotification::after {
+ left: 17px;
}
-.toolbarButton.pdfSidebarNotification::after {
+[dir="rtl"] .pdfSidebarNotification::after {
+ right: 17px;
+}
+
+.pdfSidebarNotification::after {
position: absolute;
display: inline-block;
top: 1px;
+ inset-inline-start: 17px;
/* Create a filled circle, with a diameter of 9 pixels, using only CSS: */
content: "";
background-color: rgba(112, 219, 85, 1);
@@ -1940,131 +1998,132 @@ html[dir="rtl"] #currentOutlineItem.toolbarButton::before {
width: 9px;
border-radius: 50%;
}
-html[dir="ltr"] .toolbarButton.pdfSidebarNotification::after {
- left: 17px;
+
+[dir="ltr"] .secondaryToolbarButton {
+ padding-left: 36px;
}
-html[dir="rtl"] .toolbarButton.pdfSidebarNotification::after {
- right: 17px;
+
+[dir="rtl"] .secondaryToolbarButton {
+ padding-right: 36px;
+}
+
+[dir="ltr"] .secondaryToolbarButton {
+ text-align: left;
+}
+
+[dir="rtl"] .secondaryToolbarButton {
+ text-align: right;
}
.secondaryToolbarButton {
position: relative;
margin: 0;
padding: 0 0 1px;
+ -webkit-padding-start: 36px;
+ padding-inline-start: 36px;
height: auto;
min-height: 26px;
width: auto;
min-width: 100%;
+ text-align: start;
white-space: normal;
border-radius: 0;
box-sizing: border-box;
}
-html[dir="ltr"] .secondaryToolbarButton {
- padding-left: 36px;
- text-align: left;
-}
-html[dir="rtl"] .secondaryToolbarButton {
- padding-right: 36px;
- text-align: right;
-}
-
-html[dir="ltr"] .secondaryToolbarButton > span {
+[dir="ltr"] .secondaryToolbarButton > span {
padding-right: 4px;
}
-html[dir="rtl"] .secondaryToolbarButton > span {
+[dir="rtl"] .secondaryToolbarButton > span {
padding-left: 4px;
}
+.secondaryToolbarButton > span {
+ -webkit-padding-end: 4px;
+ padding-inline-end: 4px;
+}
-.secondaryToolbarButton.firstPage::before {
+#firstPage::before {
-webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon);
- mask-image: var(--secondaryToolbarButton-firstPage-icon);
+ mask-image: var(--secondaryToolbarButton-firstPage-icon);
}
-.secondaryToolbarButton.lastPage::before {
+#lastPage::before {
-webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon);
- mask-image: var(--secondaryToolbarButton-lastPage-icon);
+ mask-image: var(--secondaryToolbarButton-lastPage-icon);
}
-.secondaryToolbarButton.rotateCcw::before {
+#pageRotateCcw::before {
-webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
- mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
+ mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
}
-.secondaryToolbarButton.rotateCw::before {
+#pageRotateCw::before {
-webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon);
- mask-image: var(--secondaryToolbarButton-rotateCw-icon);
+ mask-image: var(--secondaryToolbarButton-rotateCw-icon);
}
-.secondaryToolbarButton.selectTool::before {
+#cursorSelectTool::before {
-webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon);
- mask-image: var(--secondaryToolbarButton-selectTool-icon);
+ mask-image: var(--secondaryToolbarButton-selectTool-icon);
}
-.secondaryToolbarButton.handTool::before {
+#cursorHandTool::before {
-webkit-mask-image: var(--secondaryToolbarButton-handTool-icon);
- mask-image: var(--secondaryToolbarButton-handTool-icon);
+ mask-image: var(--secondaryToolbarButton-handTool-icon);
}
-.secondaryToolbarButton.scrollPage::before {
+#scrollPage::before {
-webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon);
- mask-image: var(--secondaryToolbarButton-scrollPage-icon);
+ mask-image: var(--secondaryToolbarButton-scrollPage-icon);
}
-.secondaryToolbarButton.scrollVertical::before {
+#scrollVertical::before {
-webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
- mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
+ mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
}
-.secondaryToolbarButton.scrollHorizontal::before {
+#scrollHorizontal::before {
-webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
- mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
+ mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
}
-.secondaryToolbarButton.scrollWrapped::before {
+#scrollWrapped::before {
-webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
- mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
+ mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
}
-.secondaryToolbarButton.spreadNone::before {
+#spreadNone::before {
-webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon);
- mask-image: var(--secondaryToolbarButton-spreadNone-icon);
+ mask-image: var(--secondaryToolbarButton-spreadNone-icon);
}
-.secondaryToolbarButton.spreadOdd::before {
+#spreadOdd::before {
-webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
- mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
+ mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
}
-.secondaryToolbarButton.spreadEven::before {
+#spreadEven::before {
-webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon);
- mask-image: var(--secondaryToolbarButton-spreadEven-icon);
+ mask-image: var(--secondaryToolbarButton-spreadEven-icon);
}
-.secondaryToolbarButton.documentProperties::before {
+#documentProperties::before {
-webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon);
- mask-image: var(--secondaryToolbarButton-documentProperties-icon);
+ mask-image: var(--secondaryToolbarButton-documentProperties-icon);
}
.verticalToolbarSeparator {
display: block;
- padding: 11px 0;
margin: 5px 2px;
width: 1px;
+ height: 22px;
background-color: var(--separator-color);
}
-html[dir="ltr"] .verticalToolbarSeparator {
- margin-left: 2px;
-}
-html[dir="rtl"] .verticalToolbarSeparator {
- margin-right: 2px;
-}
-
.horizontalToolbarSeparator {
display: block;
- margin: 6px 0 5px;
+ margin: 6px 0;
height: 1px;
width: 100%;
- border-top: 1px solid var(--doorhanger-separator-color);
+ background-color: var(--doorhanger-separator-color);
}
.toolbarField {
@@ -2073,9 +2132,7 @@ html[dir="rtl"] .verticalToolbarSeparator {
border-radius: 2px;
background-color: var(--field-bg-color);
background-clip: padding-box;
- border-width: 1px;
- border-style: solid;
- border-color: var(--field-border-color);
+ border: 1px solid var(--field-border-color);
box-shadow: none;
color: var(--field-color);
font-size: 12px;
@@ -2083,37 +2140,35 @@ html[dir="rtl"] .verticalToolbarSeparator {
outline-style: none;
}
-.toolbarField[type="checkbox"] {
- opacity: 0;
- position: absolute !important;
- left: 0;
+[dir="ltr"] .toolbarField[type="checkbox"] {
+ margin-left: 7px;
}
-html[dir="ltr"] .toolbarField[type="checkbox"] {
- margin: 10px 0 3px 7px;
+[dir="rtl"] .toolbarField[type="checkbox"] {
+ margin-right: 7px;
}
-html[dir="rtl"] .toolbarField[type="checkbox"] {
- margin: 10px 7px 3px 0;
+.toolbarField[type="checkbox"] {
+ opacity: 0;
+ position: absolute !important;
+ left: 0;
+ margin: 10px 0 3px;
+ -webkit-margin-start: 7px;
+ margin-inline-start: 7px;
}
-.toolbarField.pageNumber {
+#pageNumber {
-moz-appearance: textfield; /* hides the spinner in moz */
- min-width: 16px;
text-align: right;
width: 40px;
}
-
-.toolbarField.pageNumber.visiblePageIsLoading {
+#pageNumber.visiblePageIsLoading {
background-image: var(--loading-icon);
background-repeat: no-repeat;
background-position: 3px;
}
-
-.toolbarField.pageNumber::-webkit-inner-spin-button,
-.toolbarField.pageNumber::-webkit-outer-spin-button {
+#pageNumber::-webkit-inner-spin-button {
-webkit-appearance: none;
- margin: 0;
}
.toolbarField:focus {
@@ -2135,21 +2190,36 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
cursor: default;
}
-html[dir="ltr"] #numPages.toolbarLabel {
+[dir="ltr"] #numPages.toolbarLabel {
padding-left: 3px;
}
-html[dir="rtl"] #numPages.toolbarLabel {
+
+[dir="rtl"] #numPages.toolbarLabel {
padding-right: 3px;
}
-#thumbnailView {
+#numPages.toolbarLabel {
+ -webkit-padding-start: 3px;
+ padding-inline-start: 3px;
+}
+
+#thumbnailView,
+#outlineView,
+#attachmentsView,
+#layersView {
position: absolute;
- width: calc(100% - 60px);
+ width: calc(100% - 8px);
top: 0;
bottom: 0;
- padding: 10px 30px 0;
+ padding: 4px 4px 0;
overflow: auto;
- -webkit-overflow-scrolling: touch;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+#thumbnailView {
+ width: calc(100% - 60px);
+ padding: 10px 30px 0;
}
#thumbnailView > a:active,
@@ -2157,20 +2227,22 @@ html[dir="rtl"] #numPages.toolbarLabel {
outline: 0;
}
-.thumbnail {
- margin: 0 10px 5px;
-}
-html[dir="ltr"] .thumbnail {
+[dir="ltr"] .thumbnail {
float: left;
}
-html[dir="rtl"] .thumbnail {
+
+[dir="rtl"] .thumbnail {
float: right;
}
+.thumbnail {
+ float: inline-start;
+ margin: 0 10px 5px;
+}
+
#thumbnailView > a:last-of-type > .thumbnail {
margin-bottom: 10px;
}
-
#thumbnailView > a:last-of-type > .thumbnail:not([data-loaded]) {
margin-bottom: 9px;
}
@@ -2216,39 +2288,40 @@ a:focus > .thumbnail > .thumbnailSelectionRing,
color: rgba(255, 255, 255, 1);
}
-#outlineView,
-#attachmentsView,
-#layersView {
- position: absolute;
- width: calc(100% - 8px);
- top: 0;
- bottom: 0;
- padding: 4px 4px 0;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
- -webkit-user-select: none;
- -moz-user-select: none;
- user-select: none;
-}
-
-html[dir="ltr"] .treeWithDeepNesting > .treeItem,
-html[dir="ltr"] .treeItem > .treeItems {
+[dir="ltr"] .treeWithDeepNesting > .treeItem,[dir="ltr"]
+.treeItem > .treeItems {
margin-left: 20px;
}
-html[dir="rtl"] .treeWithDeepNesting > .treeItem,
-html[dir="rtl"] .treeItem > .treeItems {
+[dir="rtl"] .treeWithDeepNesting > .treeItem,[dir="rtl"]
+.treeItem > .treeItems {
margin-right: 20px;
}
+.treeWithDeepNesting > .treeItem,
+.treeItem > .treeItems {
+ -webkit-margin-start: 20px;
+ margin-inline-start: 20px;
+}
+
+[dir="ltr"] .treeItem > a {
+ padding-left: 4px;
+}
+
+[dir="rtl"] .treeItem > a {
+ padding-right: 4px;
+}
+
.treeItem > a {
text-decoration: none;
display: inline-block;
- min-width: 95%;
/* Subtract the right padding (left, in RTL mode) of the container: */
min-width: calc(100% - 4px);
height: auto;
margin-bottom: 1px;
+ padding: 2px 0 5px;
+ -webkit-padding-start: 4px;
+ padding-inline-start: 4px;
border-radius: 2px;
color: var(--treeitem-color);
font-size: 13px;
@@ -2259,55 +2332,55 @@ html[dir="rtl"] .treeItem > .treeItems {
white-space: normal;
cursor: pointer;
}
-html[dir="ltr"] .treeItem > a {
- padding: 2px 0 5px 4px;
-}
-html[dir="rtl"] .treeItem > a {
- padding: 2px 4px 5px 0;
-}
#layersView .treeItem > a > * {
cursor: pointer;
}
-html[dir="ltr"] #layersView .treeItem > a > label {
+[dir="ltr"] #layersView .treeItem > a > label {
padding-left: 4px;
}
-html[dir="rtl"] #layersView .treesItem > a > label {
+[dir="rtl"] #layersView .treeItem > a > label {
padding-right: 4px;
}
+#layersView .treeItem > a > label {
+ -webkit-padding-start: 4px;
+ padding-inline-start: 4px;
+}
+
+[dir="ltr"] .treeItemToggler {
+ float: left;
+}
+
+[dir="rtl"] .treeItemToggler {
+ float: right;
+}
.treeItemToggler {
position: relative;
+ float: inline-start;
height: 0;
width: 0;
color: rgba(255, 255, 255, 0.5);
}
+[dir="ltr"] .treeItemToggler::before {
+ right: 4px;
+}
+[dir="rtl"] .treeItemToggler::before {
+ left: 4px;
+}
.treeItemToggler::before {
+ inset-inline-end: 4px;
-webkit-mask-image: var(--treeitem-expanded-icon);
- mask-image: var(--treeitem-expanded-icon);
+ mask-image: var(--treeitem-expanded-icon);
}
.treeItemToggler.treeItemsHidden::before {
-webkit-mask-image: var(--treeitem-collapsed-icon);
- mask-image: var(--treeitem-collapsed-icon);
-}
-html[dir="rtl"] .treeItemToggler.treeItemsHidden::before {
- transform: scaleX(-1);
+ mask-image: var(--treeitem-collapsed-icon);
+ transform: scaleX(var(--dir-factor));
}
.treeItemToggler.treeItemsHidden ~ .treeItems {
display: none;
}
-html[dir="ltr"] .treeItemToggler {
- float: left;
-}
-html[dir="rtl"] .treeItemToggler {
- float: right;
-}
-html[dir="ltr"] .treeItemToggler::before {
- right: 4px;
-}
-html[dir="rtl"] .treeItemToggler::before {
- left: 4px;
-}
.treeItem.selected > a {
background-color: var(--treeitem-selected-bg-color);
@@ -2335,7 +2408,7 @@ html[dir="rtl"] .treeItemToggler::before {
}
#errorWrapper {
- background: none repeat scroll 0 0 var(--errorWrapper-bg-color);
+ background-color: var(--errorWrapper-bg-color);
color: var(--main-color);
left: 0;
position: absolute;
@@ -2347,11 +2420,13 @@ html[dir="rtl"] .treeItemToggler::before {
#errorMessageLeft {
float: left;
}
-
#errorMessageRight {
float: right;
}
+#errorSpacer {
+ clear: both;
+}
#errorMoreInfo {
background-color: var(--field-bg-color);
color: var(--field-color);
@@ -2361,36 +2436,17 @@ html[dir="rtl"] .treeItemToggler::before {
width: 98%;
}
-.overlayButton {
+.dialogButton {
width: auto;
margin: 3px 4px 2px !important;
padding: 2px 11px;
color: var(--main-color);
- background-color: var(--overlay-button-bg-color);
- border: var(--overlay-button-border) !important;
-}
-
-#overlayContainer {
- display: table;
- position: absolute;
- width: 100%;
- height: 100%;
- background-color: rgba(0, 0, 0, 0.2);
- z-index: 40000;
-}
-#overlayContainer > * {
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-
-#overlayContainer > .container {
- display: table-cell;
- vertical-align: middle;
- text-align: center;
+ background-color: var(--dialog-button-bg-color);
+ border: var(--dialog-button-border) !important;
}
-#overlayContainer > .container > .dialog {
- display: inline-block;
+dialog {
+ margin: auto;
padding: 15px;
border-spacing: 4px;
color: var(--main-color);
@@ -2401,20 +2457,26 @@ html[dir="rtl"] .treeItemToggler::before {
border-radius: 4px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}
+dialog::-webkit-backdrop {
+ background-color: rgba(0, 0, 0, 0.2);
+}
+dialog::backdrop {
+ background-color: rgba(0, 0, 0, 0.2);
+}
-.dialog > .row {
+dialog > .row {
display: table-row;
}
-.dialog > .row > * {
+dialog > .row > * {
display: table-cell;
}
-.dialog .toolbarField {
+dialog .toolbarField {
margin: 5px 0;
}
-.dialog .separator {
+dialog .separator {
display: block;
margin: 4px 0;
height: 1px;
@@ -2422,155 +2484,48 @@ html[dir="rtl"] .treeItemToggler::before {
background-color: var(--separator-color);
}
-.dialog .buttonRow {
+dialog .buttonRow {
text-align: center;
vertical-align: middle;
}
-.dialog :link {
+dialog :link {
color: rgba(255, 255, 255, 1);
}
-#passwordOverlay > .dialog {
+#passwordDialog {
text-align: center;
}
-#passwordOverlay .toolbarField {
+#passwordDialog .toolbarField {
width: 200px;
}
-#documentPropertiesOverlay > .dialog {
+#documentPropertiesDialog {
text-align: left;
}
-#documentPropertiesOverlay .row > * {
- min-width: 100px;
-}
-html[dir="ltr"] #documentPropertiesOverlay .row > * {
+[dir="ltr"] #documentPropertiesDialog .row > * {
text-align: left;
}
-html[dir="rtl"] #documentPropertiesOverlay .row > * {
+[dir="rtl"] #documentPropertiesDialog .row > * {
text-align: right;
}
-#documentPropertiesOverlay .row > span {
+#documentPropertiesDialog .row > * {
+ min-width: 100px;
+ text-align: start;
+}
+#documentPropertiesDialog .row > span {
width: 125px;
word-wrap: break-word;
}
-#documentPropertiesOverlay .row > p {
+#documentPropertiesDialog .row > p {
max-width: 225px;
word-wrap: break-word;
}
-#documentPropertiesOverlay .buttonRow {
+#documentPropertiesDialog .buttonRow {
margin-top: 10px;
}
-.clearBoth {
- clear: both;
-}
-
-.fileInput {
- background: rgba(255, 255, 255, 1);
- color: rgba(0, 0, 0, 1);
- margin-top: 5px;
- visibility: hidden;
- position: fixed;
- right: 0;
- top: 0;
-}
-
-#PDFBug {
- background: none repeat scroll 0 0 rgba(255, 255, 255, 1);
- border: 1px solid rgba(102, 102, 102, 1);
- position: fixed;
- top: 32px;
- right: 0;
- bottom: 0;
- font-size: 10px;
- padding: 0;
- width: 300px;
-}
-#PDFBug .controls {
- background: rgba(238, 238, 238, 1);
- border-bottom: 1px solid rgba(102, 102, 102, 1);
- padding: 3px;
-}
-#PDFBug .panels {
- bottom: 0;
- left: 0;
- overflow: auto;
- -webkit-overflow-scrolling: touch;
- position: absolute;
- right: 0;
- top: 27px;
-}
-#PDFBug .panels > div {
- padding: 5px;
-}
-#PDFBug button.active {
- font-weight: bold;
-}
-.debuggerShowText {
- background: none repeat scroll 0 0 rgba(255, 255, 0, 1);
- color: rgba(0, 0, 255, 1);
-}
-.debuggerHideText:hover {
- background: none repeat scroll 0 0 rgba(255, 255, 0, 1);
-}
-#PDFBug .stats {
- font-family: courier;
- font-size: 10px;
- white-space: pre;
-}
-#PDFBug .stats .title {
- font-weight: bold;
-}
-#PDFBug table {
- font-size: 10px;
- white-space: pre;
-}
-#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;
-}
-
-#viewer.textLayer-visible .canvasWrapper {
- background-color: rgba(128, 255, 128, 1);
-}
-
-#viewer.textLayer-visible .canvasWrapper canvas {
- mix-blend-mode: screen;
-}
-
-#viewer.textLayer-visible .textLayer span {
- background-color: rgba(255, 255, 0, 0.1);
- color: rgba(0, 0, 0, 1);
- border: solid 1px rgba(255, 0, 0, 0.5);
- box-sizing: border-box;
-}
-
-#viewer.textLayer-hover .textLayer span:hover {
- background-color: rgba(255, 255, 255, 1);
- color: rgba(0, 0, 0, 1);
-}
-
-#viewer.textLayer-shadow .textLayer span {
- background-color: rgba(255, 255, 255, 0.6);
- color: rgba(0, 0, 0, 1);
-}
-
.grab-to-pan-grab {
- cursor: url("images/grab.cur"), move !important;
cursor: -webkit-grab !important;
cursor: grab !important;
}
@@ -2580,7 +2535,6 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
}
.grab-to-pan-grab:active,
.grab-to-pan-grabbing {
- cursor: url("images/grabbing.cur"), move !important;
cursor: -webkit-grabbing !important;
cursor: grabbing !important;
position: fixed;
@@ -2603,52 +2557,9 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
}
@media print {
- /* General rules for printing. */
body {
background: rgba(0, 0, 0, 0) none;
}
-
- /* Rules for browsers that don't support mozPrintCallback. */
- #sidebarContainer,
- #secondaryToolbar,
- .toolbar,
- #loadingBox,
- #errorWrapper,
- .textLayer,
- .canvasWrapper {
- display: none;
- }
- #viewerContainer {
- overflow: visible;
- }
-
- #mainContainer,
- #viewerContainer,
- .page,
- .page canvas {
- position: static;
- padding: 0;
- margin: 0;
- }
-
- .page {
- float: left;
- display: none;
- border: none;
- box-shadow: none;
- background-clip: content-box;
- background-color: rgba(255, 255, 255, 1);
- }
-
- .page[data-loaded] {
- display: block;
- }
-
- .fileInput {
- display: none;
- }
-
- /* Rules for browsers that support PDF.js printing */
body[data-pdfjsprinting] #outerContainer {
display: none;
}
@@ -2716,21 +2627,14 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
#sidebarContainer {
background-color: var(--sidebar-narrow-bg-color);
}
-
- html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer {
+ [dir="ltr"] #outerContainer.sidebarOpen #viewerContainer {
left: 0 !important;
}
- html[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer {
+ [dir="rtl"] #outerContainer.sidebarOpen #viewerContainer {
right: 0 !important;
}
-
- #outerContainer .hiddenLargeView,
- #outerContainer .hiddenMediumView {
- display: inherit;
- }
- #outerContainer .visibleLargeView,
- #outerContainer .visibleMediumView {
- display: none;
+ #outerContainer.sidebarOpen #viewerContainer {
+ inset-inline-start: 0 !important;
}
}
@@ -2763,12 +2667,15 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
.toolbarButtonSpacer {
width: 0;
}
- html[dir="ltr"] .findbar {
+ [dir="ltr"] .findbar {
left: 34px;
}
- html[dir="rtl"] .findbar {
+ [dir="rtl"] .findbar {
right: 34px;
}
+ .findbar {
+ inset-inline-start: 34px;
+ }
}
@media all and (max-width: 535px) {
diff --git a/js/pdfjs/web/viewer.html b/js/pdfjs/web/viewer.html
index 273ccdc..9610660 100644
--- a/js/pdfjs/web/viewer.html
+++ b/js/pdfjs/web/viewer.html
@@ -27,15 +27,12 @@ See https://github.com/adobe-type-tools/cmap-resources
<meta name="google" content="notranslate">
<title>PDF.js viewer</title>
-
<link rel="stylesheet" href="viewer.css">
-
<!-- This snippet is used in production (included from viewer.html) -->
<link rel="resource" type="application/l10n" href="locale/locale.properties">
<script src="../build/pdf.js"></script>
-
<script src="viewer.js"></script>
</head>
@@ -46,17 +43,17 @@ See https://github.com/adobe-type-tools/cmap-resources
<div id="sidebarContainer">
<div id="toolbarSidebar">
<div id="toolbarSidebarLeft">
- <div class="splitToolbarButton toggled">
- <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs">
+ <div id="sidebarViewButtons" class="splitToolbarButton toggled" role="radiogroup">
+ <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs" role="radio" aria-checked="true" aria-controls="thumbnailView">
<span data-l10n-id="thumbs_label">Thumbnails</span>
</button>
- <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3" data-l10n-id="document_outline">
+ <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3" data-l10n-id="document_outline" role="radio" aria-checked="false" aria-controls="outlineView">
<span data-l10n-id="document_outline_label">Document Outline</span>
</button>
- <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" data-l10n-id="attachments">
+ <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" data-l10n-id="attachments" role="radio" aria-checked="false" aria-controls="attachmentsView">
<span data-l10n-id="attachments_label">Attachments</span>
</button>
- <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all layers to the default state)" tabindex="5" data-l10n-id="layers">
+ <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all layers to the default state)" tabindex="5" data-l10n-id="layers" role="radio" aria-checked="false" aria-controls="layersView">
<span data-l10n-id="layers_label">Layers</span>
</button>
</div>
@@ -88,13 +85,13 @@ See https://github.com/adobe-type-tools/cmap-resources
<div id="mainContainer">
<div class="findbar hidden doorHanger" id="findbar">
<div id="findbarInputContainer">
- <input id="findInput" class="toolbarField" title="Find" placeholder="Find in document…" tabindex="91" data-l10n-id="find_input">
+ <input id="findInput" class="toolbarField" title="Find" placeholder="Find in document…" tabindex="91" data-l10n-id="find_input" aria-invalid="false">
<div class="splitToolbarButton">
- <button id="findPrevious" class="toolbarButton findPrevious" title="Find the previous occurrence of the phrase" tabindex="92" data-l10n-id="find_previous">
+ <button id="findPrevious" class="toolbarButton" title="Find the previous occurrence of the phrase" tabindex="92" data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button id="findNext" class="toolbarButton findNext" title="Find the next occurrence of the phrase" tabindex="93" data-l10n-id="find_next">
+ <button id="findNext" class="toolbarButton" title="Find the next occurrence of the phrase" tabindex="93" data-l10n-id="find_next">
<span data-l10n-id="find_next_label">Next</span>
</button>
</div>
@@ -113,93 +110,97 @@ See https://github.com/adobe-type-tools/cmap-resources
<label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole Words</label>
</div>
- <div class="findbarMessageContainer">
+ <div id="findbarMessageContainer" aria-live="polite">
<span id="findResultsCount" class="toolbarLabel"></span>
- </div>
- <div class="findbarMessageContainer">
<span id="findMsg" class="toolbarLabel"></span>
</div>
</div> <!-- findbar -->
<div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
<div id="secondaryToolbarButtonContainer">
- <button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView" title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode">
+ <button id="secondaryPresentationMode" class="secondaryToolbarButton visibleLargeView" title="Switch to Presentation Mode" tabindex="51" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
- <button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
+ <button id="secondaryOpenFile" class="secondaryToolbarButton visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>
- <button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print">
+ <button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="53" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
- <button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download">
+ <button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Download" tabindex="54" data-l10n-id="download">
<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 visibleSmallView" 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>
<div class="horizontalToolbarSeparator visibleLargeView"></div>
- <button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="56" data-l10n-id="first_page">
+ <button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56" data-l10n-id="first_page">
<span data-l10n-id="first_page_label">Go to First Page</span>
</button>
- <button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">
+ <button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">
<span data-l10n-id="last_page_label">Go to Last Page</span>
</button>
<div class="horizontalToolbarSeparator"></div>
- <button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">
+ <button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">
<span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
</button>
- <button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">
+ <button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">
<span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
</button>
<div class="horizontalToolbarSeparator"></div>
- <button id="cursorSelectTool" class="secondaryToolbarButton selectTool toggled" title="Enable Text Selection Tool" tabindex="60" data-l10n-id="cursor_text_select_tool">
- <span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>
- </button>
- <button id="cursorHandTool" class="secondaryToolbarButton handTool" title="Enable Hand Tool" tabindex="61" data-l10n-id="cursor_hand_tool">
- <span data-l10n-id="cursor_hand_tool_label">Hand Tool</span>
- </button>
+ <div id="cursorToolButtons" role="radiogroup">
+ <button id="cursorSelectTool" class="secondaryToolbarButton toggled" title="Enable Text Selection Tool" tabindex="60" data-l10n-id="cursor_text_select_tool" role="radio" aria-checked="true">
+ <span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>
+ </button>
+ <button id="cursorHandTool" class="secondaryToolbarButton" title="Enable Hand Tool" tabindex="61" data-l10n-id="cursor_hand_tool" role="radio" aria-checked="false">
+ <span data-l10n-id="cursor_hand_tool_label">Hand Tool</span>
+ </button>
+ </div>
<div class="horizontalToolbarSeparator"></div>
- <button id="scrollPage" class="secondaryToolbarButton scrollPage" title="Use Page Scrolling" tabindex="62" data-l10n-id="scroll_page">
- <span data-l10n-id="scroll_page_label">Page Scrolling</span>
- </button>
- <button id="scrollVertical" class="secondaryToolbarButton scrollVertical toggled" title="Use Vertical Scrolling" tabindex="63" data-l10n-id="scroll_vertical">
- <span data-l10n-id="scroll_vertical_label">Vertical Scrolling</span>
- </button>
- <button id="scrollHorizontal" class="secondaryToolbarButton scrollHorizontal" title="Use Horizontal Scrolling" tabindex="64" data-l10n-id="scroll_horizontal">
- <span data-l10n-id="scroll_horizontal_label">Horizontal Scrolling</span>
- </button>
- <button id="scrollWrapped" class="secondaryToolbarButton scrollWrapped" title="Use Wrapped Scrolling" tabindex="65" data-l10n-id="scroll_wrapped">
- <span data-l10n-id="scroll_wrapped_label">Wrapped Scrolling</span>
- </button>
+ <div id="scrollModeButtons" role="radiogroup">
+ <button id="scrollPage" class="secondaryToolbarButton" title="Use Page Scrolling" tabindex="62" data-l10n-id="scroll_page" role="radio" aria-checked="false">
+ <span data-l10n-id="scroll_page_label">Page Scrolling</span>
+ </button>
+ <button id="scrollVertical" class="secondaryToolbarButton toggled" title="Use Vertical Scrolling" tabindex="63" data-l10n-id="scroll_vertical" role="radio" aria-checked="true">
+ <span data-l10n-id="scroll_vertical_label" >Vertical Scrolling</span>
+ </button>
+ <button id="scrollHorizontal" class="secondaryToolbarButton" title="Use Horizontal Scrolling" tabindex="64" data-l10n-id="scroll_horizontal" role="radio" aria-checked="false">
+ <span data-l10n-id="scroll_horizontal_label">Horizontal Scrolling</span>
+ </button>
+ <button id="scrollWrapped" class="secondaryToolbarButton" title="Use Wrapped Scrolling" tabindex="65" data-l10n-id="scroll_wrapped" role="radio" aria-checked="false">
+ <span data-l10n-id="scroll_wrapped_label">Wrapped Scrolling</span>
+ </button>
+ </div>
<div class="horizontalToolbarSeparator"></div>
- <button id="spreadNone" class="secondaryToolbarButton spreadNone toggled" title="Do not join page spreads" tabindex="66" data-l10n-id="spread_none">
- <span data-l10n-id="spread_none_label">No Spreads</span>
- </button>
- <button id="spreadOdd" class="secondaryToolbarButton spreadOdd" title="Join page spreads starting with odd-numbered pages" tabindex="67" data-l10n-id="spread_odd">
- <span data-l10n-id="spread_odd_label">Odd Spreads</span>
- </button>
- <button id="spreadEven" class="secondaryToolbarButton spreadEven" title="Join page spreads starting with even-numbered pages" tabindex="68" data-l10n-id="spread_even">
- <span data-l10n-id="spread_even_label">Even Spreads</span>
- </button>
+ <div id="spreadModeButtons" role="radiogroup">
+ <button id="spreadNone" class="secondaryToolbarButton toggled" title="Do not join page spreads" tabindex="66" data-l10n-id="spread_none" role="radio" aria-checked="true">
+ <span data-l10n-id="spread_none_label">No Spreads</span>
+ </button>
+ <button id="spreadOdd" class="secondaryToolbarButton" title="Join page spreads starting with odd-numbered pages" tabindex="67" data-l10n-id="spread_odd" role="radio" aria-checked="false">
+ <span data-l10n-id="spread_odd_label">Odd Spreads</span>
+ </button>
+ <button id="spreadEven" class="secondaryToolbarButton" title="Join page spreads starting with even-numbered pages" tabindex="68" data-l10n-id="spread_even" role="radio" aria-checked="false">
+ <span data-l10n-id="spread_even_label">Even Spreads</span>
+ </button>
+ </div>
<div class="horizontalToolbarSeparator"></div>
- <button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="69" data-l10n-id="document_properties">
+ <button id="documentProperties" class="secondaryToolbarButton" title="Document Properties…" tabindex="69" data-l10n-id="document_properties" aria-controls="documentPropertiesDialog">
<span data-l10n-id="document_properties_label">Document Properties…</span>
</button>
</div>
@@ -217,34 +218,34 @@ See https://github.com/adobe-type-tools/cmap-resources
<span data-l10n-id="findbar_label">Find</span>
</button>
<div class="splitToolbarButton hiddenSmallView">
- <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous">
+ <button class="toolbarButton" title="Previous Page" id="previous" tabindex="13" data-l10n-id="previous">
<span data-l10n-id="previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
+ <button class="toolbarButton" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
<span data-l10n-id="next_label">Next</span>
</button>
</div>
- <input type="number" id="pageNumber" class="toolbarField pageNumber" title="Page" value="1" size="4" min="1" tabindex="15" data-l10n-id="page" autocomplete="off">
+ <input type="number" id="pageNumber" class="toolbarField" title="Page" value="1" size="4" min="1" tabindex="15" data-l10n-id="page" autocomplete="off">
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
- <button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode">
+ <button id="presentationMode" class="toolbarButton hiddenLargeView" title="Switch to Presentation Mode" tabindex="31" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
- <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
+ <button id="openFile" class="toolbarButton hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>
- <button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print">
+ <button id="print" class="toolbarButton hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
- <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
+ <button id="download" class="toolbarButton 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 hiddenSmallView" 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>
@@ -256,11 +257,11 @@ See https://github.com/adobe-type-tools/cmap-resources
</div>
<div id="toolbarViewerMiddle">
<div class="splitToolbarButton">
- <button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
+ <button id="zoomOut" class="toolbarButton" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
<span data-l10n-id="zoom_out_label">Zoom Out</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in">
+ <button id="zoomIn" class="toolbarButton" title="Zoom In" tabindex="22" data-l10n-id="zoom_in">
<span data-l10n-id="zoom_in_label">Zoom In</span>
</button>
</div>
@@ -311,95 +312,105 @@ See https://github.com/adobe-type-tools/cmap-resources
Close
</button>
</div>
- <div class="clearBoth"></div>
+ <div id="errorSpacer"></div>
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
</div>
</div> <!-- mainContainer -->
- <div id="overlayContainer" class="hidden">
- <div id="passwordOverlay" class="container hidden">
- <div class="dialog">
- <div class="row">
- <p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p>
- </div>
- <div class="row">
- <input type="password" id="password" class="toolbarField">
- </div>
- <div class="buttonRow">
- <button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button>
- <button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button>
- </div>
+ <div id="dialogContainer">
+ <dialog id="passwordDialog">
+ <div class="row">
+ <label for="password" id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</label>
</div>
- </div>
- <div id="documentPropertiesOverlay" class="container hidden">
- <div class="dialog">
- <div class="row">
- <span data-l10n-id="document_properties_file_name">File name:</span> <p id="fileNameField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_file_size">File size:</span> <p id="fileSizeField">-</p>
- </div>
- <div class="separator"></div>
- <div class="row">
- <span data-l10n-id="document_properties_title">Title:</span> <p id="titleField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_author">Author:</span> <p id="authorField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_subject">Subject:</span> <p id="subjectField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_keywords">Keywords:</span> <p id="keywordsField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_creation_date">Creation Date:</span> <p id="creationDateField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p>
- </div>
- <div class="separator"></div>
- <div class="row">
- <span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
- </div>
- <div class="row">
- <span data-l10n-id="document_properties_page_size">Page Size:</span> <p id="pageSizeField">-</p>
- </div>
- <div class="separator"></div>
- <div class="row">
- <span data-l10n-id="document_properties_linearized">Fast Web View:</span> <p id="linearizedField">-</p>
- </div>
- <div class="buttonRow">
- <button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button>
- </div>
+ <div class="row">
+ <input type="password" id="password" class="toolbarField">
</div>
- </div>
- <div id="printServiceOverlay" class="container hidden">
- <div class="dialog">
- <div class="row">
- <span data-l10n-id="print_progress_message">Preparing document for printing…</span>
- </div>
- <div class="row">
- <progress value="0" max="100"></progress>
- <span data-l10n-id="print_progress_percent" data-l10n-args='{ "progress": 0 }' class="relative-progress">0%</span>
- </div>
- <div class="buttonRow">
- <button id="printCancel" class="overlayButton"><span data-l10n-id="print_progress_close">Cancel</span></button>
- </div>
+ <div class="buttonRow">
+ <button id="passwordCancel" class="dialogButton"><span data-l10n-id="password_cancel">Cancel</span></button>
+ <button id="passwordSubmit" class="dialogButton"><span data-l10n-id="password_ok">OK</span></button>
</div>
- </div>
- </div> <!-- overlayContainer -->
+ </dialog>
+ <dialog id="documentPropertiesDialog">
+ <div class="row">
+ <span id="fileNameLabel" data-l10n-id="document_properties_file_name">File name:</span>
+ <p id="fileNameField" aria-labelledby="fileNameLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="fileSizeLabel" data-l10n-id="document_properties_file_size">File size:</span>
+ <p id="fileSizeField" aria-labelledby="fileSizeLabel">-</p>
+ </div>
+ <div class="separator"></div>
+ <div class="row">
+ <span id="titleLabel" data-l10n-id="document_properties_title">Title:</span>
+ <p id="titleField" aria-labelledby="titleLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="authorLabel" data-l10n-id="document_properties_author">Author:</span>
+ <p id="authorField" aria-labelledby="authorLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="subjectLabel" data-l10n-id="document_properties_subject">Subject:</span>
+ <p id="subjectField" aria-labelledby="subjectLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="keywordsLabel" data-l10n-id="document_properties_keywords">Keywords:</span>
+ <p id="keywordsField" aria-labelledby="keywordsLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="creationDateLabel" data-l10n-id="document_properties_creation_date">Creation Date:</span>
+ <p id="creationDateField" aria-labelledby="creationDateLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="modificationDateLabel" data-l10n-id="document_properties_modification_date">Modification Date:</span>
+ <p id="modificationDateField" aria-labelledby="modificationDateLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="creatorLabel" data-l10n-id="document_properties_creator">Creator:</span>
+ <p id="creatorField" aria-labelledby="creatorLabel">-</p>
+ </div>
+ <div class="separator"></div>
+ <div class="row">
+ <span id="producerLabel" data-l10n-id="document_properties_producer">PDF Producer:</span>
+ <p id="producerField" aria-labelledby="producerLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="versionLabel" data-l10n-id="document_properties_version">PDF Version:</span>
+ <p id="versionField" aria-labelledby="versionLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="pageCountLabel" data-l10n-id="document_properties_page_count">Page Count:</span>
+ <p id="pageCountField" aria-labelledby="pageCountLabel">-</p>
+ </div>
+ <div class="row">
+ <span id="pageSizeLabel" data-l10n-id="document_properties_page_size">Page Size:</span>
+ <p id="pageSizeField" aria-labelledby="pageSizeLabel">-</p>
+ </div>
+ <div class="separator"></div>
+ <div class="row">
+ <span id="linearizedLabel" data-l10n-id="document_properties_linearized">Fast Web View:</span>
+ <p id="linearizedField" aria-labelledby="linearizedLabel">-</p>
+ </div>
+ <div class="buttonRow">
+ <button id="documentPropertiesClose" class="dialogButton"><span data-l10n-id="document_properties_close">Close</span></button>
+ </div>
+ </dialog>
+ <dialog id="printServiceDialog" style="min-width: 200px;">
+ <div class="row">
+ <span data-l10n-id="print_progress_message">Preparing document for printing…</span>
+ </div>
+ <div class="row">
+ <progress value="0" max="100"></progress>
+ <span data-l10n-id="print_progress_percent" data-l10n-args='{ "progress": 0 }' class="relative-progress">0%</span>
+ </div>
+ <div class="buttonRow">
+ <button id="printCancel" class="dialogButton"><span data-l10n-id="print_progress_close">Cancel</span></button>
+ </div>
+ </dialog>
+ </div> <!-- dialogContainer -->
</div> <!-- outerContainer -->
<div id="printContainer"></div>
+
+ <input type="file" id="fileInput" class="hidden">
</body>
</html>
diff --git a/js/pdfjs/web/viewer.js b/js/pdfjs/web/viewer.js
index ce67997..a0d3e46 100644
--- a/js/pdfjs/web/viewer.js
+++ b/js/pdfjs/web/viewer.js
@@ -1,6 +1,6 @@
/**
* @licstart The following is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*
* Copyright 2022 Mozilla Foundation
*
@@ -17,7 +17,7 @@
* limitations under the License.
*
* @licend The above is the entire license notice for the
- * Javascript code in this page
+ * JavaScript code in this page
*/
/******/ (() => { // webpackBootstrap
@@ -117,6 +117,14 @@ const defaultOptions = {
compatibility: compatibilityParams.maxCanvasPixels,
kind: OptionKind.VIEWER
},
+ pageColorsBackground: {
+ value: "Canvas",
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
+ pageColorsForeground: {
+ value: "CanvasText",
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+ },
pdfBugEnabled: {
value: false,
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
@@ -401,8 +409,6 @@ class DefaultExternalServices {
static initPassiveLoading(callbacks) {}
- static async fallback(data) {}
-
static reportTelemetry(data) {}
static createDownloadManager(options) {
@@ -446,7 +452,6 @@ exports.DefaultExternalServices = DefaultExternalServices;
const PDFViewerApplication = {
initialBookmark: document.location.hash.substring(1),
_initializedCapability: (0, _pdfjsLib.createPromiseCapability)(),
- _fellback: false,
appConfig: null,
pdfDocument: null,
pdfLoadingTask: null,
@@ -489,6 +494,7 @@ const PDFViewerApplication = {
_docStats: null,
_wheelUnusedTicks: 0,
_idleCallbacks: new Set(),
+ _PDFBug: null,
async initialize(appConfig) {
this.preferences = this.externalServices.createPreferences();
@@ -544,11 +550,18 @@ const PDFViewerApplication = {
return;
}
- const params = (0, _ui_utils.parseQueryString)(hash),
- waitOn = [];
+ const {
+ mainContainer,
+ viewerContainer
+ } = this.appConfig,
+ params = (0, _ui_utils.parseQueryString)(hash);
if (params.get("disableworker") === "true") {
- waitOn.push(loadFakeWorker());
+ try {
+ await loadFakeWorker();
+ } catch (ex) {
+ console.error(`_parseHashParameters: "${ex.message}".`);
+ }
}
if (params.has("disablerange")) {
@@ -585,8 +598,16 @@ const PDFViewerApplication = {
case "visible":
case "shadow":
case "hover":
- const viewer = this.appConfig.viewerContainer;
- viewer.classList.add(`textLayer-${params.get("textlayer")}`);
+ viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`);
+
+ try {
+ await loadPDFBug(this);
+
+ this._PDFBug.loadCSS();
+ } catch (ex) {
+ console.error(`_parseHashParameters: "${ex.message}".`);
+ }
+
break;
}
}
@@ -597,21 +618,20 @@ const PDFViewerApplication = {
_app_options.AppOptions.set("fontExtraProperties", true);
const enabled = params.get("pdfbug").split(",");
- waitOn.push(initPDFBug(enabled));
- }
- if (params.has("locale")) {
- _app_options.AppOptions.set("locale", params.get("locale"));
- }
+ try {
+ await loadPDFBug(this);
- if (waitOn.length === 0) {
- return;
+ this._PDFBug.init({
+ OPS: _pdfjsLib.OPS
+ }, mainContainer, enabled);
+ } catch (ex) {
+ console.error(`_parseHashParameters: "${ex.message}".`);
+ }
}
- try {
- await Promise.all(waitOn);
- } catch (reason) {
- console.error(`_parseHashParameters: "${reason.message}".`);
+ if (params.has("locale")) {
+ _app_options.AppOptions.set("locale", params.get("locale"));
}
},
@@ -709,7 +729,11 @@ const PDFViewerApplication = {
enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"),
useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"),
maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"),
- enablePermissions: _app_options.AppOptions.get("enablePermissions")
+ enablePermissions: _app_options.AppOptions.get("enablePermissions"),
+ pageColors: {
+ background: _app_options.AppOptions.get("pageColorsBackground"),
+ foreground: _app_options.AppOptions.get("pageColorsForeground")
+ }
});
pdfRenderingQueue.setViewer(this.pdfViewer);
pdfLinkService.setViewer(this.pdfViewer);
@@ -742,7 +766,7 @@ const PDFViewerApplication = {
cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad")
});
this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n);
- this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
+ this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus);
if (this.supportsFullscreen) {
this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
@@ -945,7 +969,6 @@ const PDFViewerApplication = {
}
this.pdfLinkService.externalLinkEnabled = true;
- this._fellback = false;
this.store = null;
this.isInitialViewSet = false;
this.downloadComplete = false;
@@ -970,11 +993,7 @@ const PDFViewerApplication = {
this.findBar?.reset();
this.toolbar.reset();
this.secondaryToolbar.reset();
-
- if (typeof PDFBug !== "undefined") {
- PDFBug.cleanup();
- }
-
+ this._PDFBug?.cleanup();
await Promise.all(promises);
},
@@ -1132,24 +1151,6 @@ const PDFViewerApplication = {
type: "unsupportedFeature",
featureId
});
-
- if (this._fellback) {
- return;
- }
-
- this._fellback = true;
- this.externalServices.fallback({
- featureId,
- url: this.baseUrl
- }).then(download => {
- if (!download) {
- return;
- }
-
- this.download({
- sourceEventType: "download"
- });
- });
},
_documentError(message, moreInfo = null) {
@@ -2129,9 +2130,7 @@ const PDFViewerApplication = {
},
_unblockDocumentLoadEvent() {
- if (document.blockUnblockOnload) {
- document.blockUnblockOnload(false);
- }
+ document.blockUnblockOnload?.(false);
this._unblockDocumentLoadEvent = () => {};
},
@@ -2161,7 +2160,7 @@ let validateFileURL;
const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"];
validateFileURL = function (file) {
- if (file === undefined) {
+ if (!file) {
return;
}
@@ -2189,70 +2188,53 @@ let validateFileURL;
}
async function loadFakeWorker() {
- if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) {
- _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get("workerSrc");
- }
-
+ _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc");
await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc);
}
-async function initPDFBug(enabledTabs) {
+async function loadPDFBug(self) {
+ const {
+ debuggerScriptPath
+ } = self.appConfig;
const {
- debuggerScriptPath,
- mainContainer
- } = PDFViewerApplication.appConfig;
- await (0, _pdfjsLib.loadScript)(debuggerScriptPath);
- PDFBug.init({
- OPS: _pdfjsLib.OPS
- }, mainContainer, enabledTabs);
+ PDFBug
+ } = await import(debuggerScriptPath);
+ self._PDFBug = PDFBug;
}
function reportPageStatsPDFBug({
pageNumber
}) {
- if (typeof Stats === "undefined" || !Stats.enabled) {
+ if (!globalThis.Stats?.enabled) {
return;
}
const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
- const pageStats = pageView?.pdfPage?.stats;
-
- if (!pageStats) {
- return;
- }
-
- Stats.add(pageNumber, pageStats);
+ globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats);
}
function webViewerInitialized() {
- const appConfig = PDFViewerApplication.appConfig;
+ const {
+ appConfig,
+ eventBus
+ } = PDFViewerApplication;
let file;
const queryString = document.location.search.substring(1);
const params = (0, _ui_utils.parseQueryString)(queryString);
file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl");
validateFileURL(file);
- const fileInput = document.createElement("input");
- fileInput.id = appConfig.openFileInputName;
- fileInput.className = "fileInput";
- fileInput.setAttribute("type", "file");
- fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
- document.body.appendChild(fileInput);
-
- if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
- appConfig.toolbar.openFile.hidden = true;
- appConfig.secondaryToolbar.openFileButton.hidden = true;
- } else {
- fileInput.value = null;
- }
-
+ const fileInput = appConfig.openFileInput;
+ fileInput.value = null;
fileInput.addEventListener("change", function (evt) {
- const files = evt.target.files;
+ const {
+ files
+ } = evt.target;
if (!files || files.length === 0) {
return;
}
- PDFViewerApplication.eventBus.dispatch("fileinputchange", {
+ eventBus.dispatch("fileinputchange", {
source: this,
fileInput: evt.target
});
@@ -2263,13 +2245,15 @@ function webViewerInitialized() {
});
appConfig.mainContainer.addEventListener("drop", function (evt) {
evt.preventDefault();
- const files = evt.dataTransfer.files;
+ const {
+ files
+ } = evt.dataTransfer;
if (!files || files.length === 0) {
return;
}
- PDFViewerApplication.eventBus.dispatch("fileinputchange", {
+ eventBus.dispatch("fileinputchange", {
source: this,
fileInput: evt.dataTransfer
});
@@ -2299,14 +2283,18 @@ function webViewerInitialized() {
appConfig.mainContainer.addEventListener("transitionend", function (evt) {
if (evt.target === this) {
- PDFViewerApplication.eventBus.dispatch("resize", {
+ eventBus.dispatch("resize", {
source: this
});
}
}, true);
try {
- webViewerOpenFileViaURL(file);
+ if (file) {
+ PDFViewerApplication.open(file);
+ } else {
+ PDFViewerApplication._hideViewBookmark();
+ }
} catch (reason) {
PDFViewerApplication.l10n.get("loading_error").then(msg => {
PDFViewerApplication._documentError(msg, reason);
@@ -2314,14 +2302,6 @@ function webViewerInitialized() {
}
}
-function webViewerOpenFileViaURL(file) {
- if (file) {
- PDFViewerApplication.open(file);
- } else {
- PDFViewerApplication._hideViewBookmark();
- }
-}
-
function webViewerPageRendered({
pageNumber,
error
@@ -2456,6 +2436,7 @@ function webViewerResize() {
pdfDocument,
pdfViewer
} = PDFViewerApplication;
+ pdfViewer.updateContainerHeightCss();
if (!pdfDocument) {
return;
@@ -2484,9 +2465,8 @@ function webViewerHashchange(evt) {
}
}
-let webViewerFileInputChange, webViewerOpenFile;
{
- webViewerFileInputChange = function (evt) {
+ var webViewerFileInputChange = function (evt) {
if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {
return;
}
@@ -2504,9 +2484,9 @@ let webViewerFileInputChange, webViewerOpenFile;
PDFViewerApplication.open(url);
};
- webViewerOpenFile = function (evt) {
- const openFileInputName = PDFViewerApplication.appConfig.openFileInputName;
- document.getElementById(openFileInputName).click();
+ var webViewerOpenFile = function (evt) {
+ const fileInput = PDFViewerApplication.appConfig.openFileInput;
+ fileInput.click();
};
}
@@ -3123,7 +3103,6 @@ const SCROLLBAR_PADDING = 40;
exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
const VERTICAL_PADDING = 5;
exports.VERTICAL_PADDING = VERTICAL_PADDING;
-const LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset";
const RenderingStates = {
INITIAL: 0,
RUNNING: 1,
@@ -3566,31 +3545,26 @@ function clamp(v, min, max) {
}
class ProgressBar {
- constructor(id, {
- height,
- width,
- units
- } = {}) {
+ constructor(id) {
+ if (arguments.length > 1) {
+ throw new Error("ProgressBar no longer accepts any additional options, " + "please use CSS rules to modify its appearance instead.");
+ }
+
this.visible = true;
this.div = document.querySelector(id + " .progress");
this.bar = this.div.parentNode;
- this.height = height || 100;
- this.width = width || 100;
- this.units = units || "%";
- this.div.style.height = this.height + this.units;
this.percent = 0;
}
- _updateBar() {
+ #updateBar() {
if (this._indeterminate) {
this.div.classList.add("indeterminate");
- this.div.style.width = this.width + this.units;
return;
}
this.div.classList.remove("indeterminate");
- const progressSize = this.width * this._percent / 100;
- this.div.style.width = progressSize + this.units;
+ const doc = document.documentElement;
+ doc.style.setProperty("--progressBar-percent", `${this._percent}%`);
}
get percent() {
@@ -3600,8 +3574,7 @@ class ProgressBar {
set percent(val) {
this._indeterminate = isNaN(val);
this._percent = clamp(val, 0, 100);
-
- this._updateBar();
+ this.#updateBar();
}
setWidth(viewer) {
@@ -3614,7 +3587,7 @@ class ProgressBar {
if (scrollbarWidth > 0) {
const doc = document.documentElement;
- doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`);
+ doc.style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`);
}
}
@@ -3902,9 +3875,7 @@ class PDFCursorTools {
this.handTool = new _grab_to_pan.GrabToPan({
element: this.container
});
-
- this._addEventListeners();
-
+ this.#addEventListeners();
Promise.resolve().then(() => {
this.switchTool(cursorToolOnLoad);
});
@@ -3953,18 +3924,17 @@ class PDFCursorTools {
}
this.active = tool;
-
- this._dispatchEvent();
+ this.#dispatchEvent();
}
- _dispatchEvent() {
+ #dispatchEvent() {
this.eventBus.dispatch("cursortoolchanged", {
source: this,
tool: this.active
});
}
- _addEventListeners() {
+ #addEventListeners() {
this.eventBus._on("switchcursortool", evt => {
this.switchTool(evt.tool);
});
@@ -4674,98 +4644,66 @@ Object.defineProperty(exports, "__esModule", ({
exports.OverlayManager = void 0;
class OverlayManager {
- constructor() {
- this._overlays = {};
- this._active = null;
- this._keyDownBound = this._keyDown.bind(this);
- }
+ #overlays = new WeakMap();
+ #active = null;
get active() {
- return this._active;
+ return this.#active;
}
- async register(name, element, callerCloseMethod = null, canForceClose = false) {
- let container;
-
- if (!name || !element || !(container = element.parentNode)) {
+ async register(dialog, canForceClose = false) {
+ if (typeof dialog !== "object") {
throw new Error("Not enough parameters.");
- } else if (this._overlays[name]) {
+ } else if (this.#overlays.has(dialog)) {
throw new Error("The overlay is already registered.");
}
- this._overlays[name] = {
- element,
- container,
- callerCloseMethod,
+ this.#overlays.set(dialog, {
canForceClose
- };
+ });
+ dialog.addEventListener("cancel", evt => {
+ this.#active = null;
+ });
}
- async unregister(name) {
- if (!this._overlays[name]) {
+ async unregister(dialog) {
+ if (!this.#overlays.has(dialog)) {
throw new Error("The overlay does not exist.");
- } else if (this._active === name) {
+ } else if (this.#active === dialog) {
throw new Error("The overlay cannot be removed while it is active.");
}
- delete this._overlays[name];
+ this.#overlays.delete(dialog);
}
- async open(name) {
- if (!this._overlays[name]) {
+ async open(dialog) {
+ if (!this.#overlays.has(dialog)) {
throw new Error("The overlay does not exist.");
- } else if (this._active) {
- if (this._overlays[name].canForceClose) {
- this._closeThroughCaller();
- } else if (this._active === name) {
+ } else if (this.#active) {
+ if (this.#active === dialog) {
throw new Error("The overlay is already active.");
+ } else if (this.#overlays.get(dialog).canForceClose) {
+ await this.close();
} else {
throw new Error("Another overlay is currently active.");
}
}
- this._active = name;
-
- this._overlays[this._active].element.classList.remove("hidden");
-
- this._overlays[this._active].container.classList.remove("hidden");
-
- window.addEventListener("keydown", this._keyDownBound);
+ this.#active = dialog;
+ dialog.showModal();
}
- async close(name) {
- if (!this._overlays[name]) {
+ async close(dialog = this.#active) {
+ if (!this.#overlays.has(dialog)) {
throw new Error("The overlay does not exist.");
- } else if (!this._active) {
+ } else if (!this.#active) {
throw new Error("The overlay is currently not active.");
- } else if (this._active !== name) {
+ } else if (this.#active !== dialog) {
throw new Error("Another overlay is currently active.");
}
- this._overlays[this._active].container.classList.add("hidden");
-
- this._overlays[this._active].element.classList.add("hidden");
-
- this._active = null;
- window.removeEventListener("keydown", this._keyDownBound);
- }
-
- _keyDown(evt) {
- if (this._active && evt.keyCode === 27) {
- this._closeThroughCaller();
-
- evt.preventDefault();
- }
- }
-
- _closeThroughCaller() {
- if (this._overlays[this._active].callerCloseMethod) {
- this._overlays[this._active].callerCloseMethod();
- }
-
- if (this._active) {
- this.close(this._active);
- }
+ dialog.close();
+ this.#active = null;
}
}
@@ -4786,9 +4724,11 @@ exports.PasswordPrompt = void 0;
var _pdfjsLib = __webpack_require__(5);
class PasswordPrompt {
+ #updateCallback = null;
+ #reason = null;
+
constructor(options, overlayManager, l10n, isViewerEmbedded = false) {
- this.overlayName = options.overlayName;
- this.container = options.container;
+ this.dialog = options.dialog;
this.label = options.label;
this.input = options.input;
this.submitButton = options.submitButton;
@@ -4796,8 +4736,6 @@ class PasswordPrompt {
this.overlayManager = overlayManager;
this.l10n = l10n;
this._isViewerEmbedded = isViewerEmbedded;
- this.updateCallback = null;
- this.reason = null;
this.submitButton.addEventListener("click", this.#verify.bind(this));
this.cancelButton.addEventListener("click", this.#cancel.bind(this));
this.input.addEventListener("keydown", e => {
@@ -4805,12 +4743,13 @@ class PasswordPrompt {
this.#verify();
}
});
- this.overlayManager.register(this.overlayName, this.container, this.#cancel.bind(this), true);
+ this.overlayManager.register(this.dialog, true);
+ this.dialog.addEventListener("close", this.#cancel.bind(this));
}
async open() {
- await this.overlayManager.open(this.overlayName);
- const passwordIncorrect = this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;
+ await this.overlayManager.open(this.dialog);
+ const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;
if (!this._isViewerEmbedded || passwordIncorrect) {
this.input.focus();
@@ -4820,27 +4759,37 @@ class PasswordPrompt {
}
async close() {
- await this.overlayManager.close(this.overlayName);
- this.input.value = "";
+ if (this.overlayManager.active === this.dialog) {
+ this.overlayManager.close(this.dialog);
+ }
}
#verify() {
const password = this.input.value;
if (password?.length > 0) {
- this.close();
- this.updateCallback(password);
+ this.#invokeCallback(password);
}
}
#cancel() {
+ this.#invokeCallback(new Error("PasswordPrompt cancelled."));
+ }
+
+ #invokeCallback(password) {
+ if (!this.#updateCallback) {
+ return;
+ }
+
this.close();
- this.updateCallback(new Error("PasswordPrompt cancelled."));
+ this.input.value = "";
+ this.#updateCallback(password);
+ this.#updateCallback = null;
}
setUpdateCallback(updateCallback, reason) {
- this.updateCallback = updateCallback;
- this.reason = reason;
+ this.#updateCallback = updateCallback;
+ this.#reason = reason;
}
}
@@ -4862,12 +4811,14 @@ var _pdfjsLib = __webpack_require__(5);
var _base_tree_viewer = __webpack_require__(12);
+var _event_utils = __webpack_require__(4);
+
class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
constructor(options) {
super(options);
this.downloadManager = options.downloadManager;
- this.eventBus._on("fileattachmentannotation", this._appendAttachment.bind(this));
+ this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this));
}
reset(keepRenderedCapability = false) {
@@ -4878,32 +4829,26 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
}
- if (this._pendingDispatchEvent) {
- clearTimeout(this._pendingDispatchEvent);
- }
-
- this._pendingDispatchEvent = null;
+ this._pendingDispatchEvent = false;
}
- _dispatchEvent(attachmentsCount) {
+ async _dispatchEvent(attachmentsCount) {
this._renderedCapability.resolve();
- if (this._pendingDispatchEvent) {
- clearTimeout(this._pendingDispatchEvent);
- this._pendingDispatchEvent = null;
- }
-
- if (attachmentsCount === 0) {
- this._pendingDispatchEvent = setTimeout(() => {
- this.eventBus.dispatch("attachmentsloaded", {
- source: this,
- attachmentsCount: 0
- });
- this._pendingDispatchEvent = null;
+ if (attachmentsCount === 0 && !this._pendingDispatchEvent) {
+ this._pendingDispatchEvent = true;
+ await (0, _event_utils.waitOnEventOrTimeout)({
+ target: this.eventBus,
+ name: "annotationlayerrendered",
+ delay: 1000
});
- return;
+
+ if (!this._pendingDispatchEvent) {
+ return;
+ }
}
+ this._pendingDispatchEvent = false;
this.eventBus.dispatch("attachmentsloaded", {
source: this,
attachmentsCount
@@ -4964,8 +4909,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
this._finishRendering(fragment, attachmentsCount);
}
- _appendAttachment({
- id,
+ #appendAttachment({
filename,
content
}) {
@@ -4975,19 +4919,15 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
return;
}
- let attachments = this._attachments;
+ const attachments = this._attachments || Object.create(null);
- if (!attachments) {
- attachments = Object.create(null);
- } else {
- for (const name in attachments) {
- if (id === name) {
- return;
- }
+ for (const name in attachments) {
+ if (filename === name) {
+ return;
}
}
- attachments[id] = {
+ attachments[filename] = {
filename,
content
};
@@ -5169,22 +5109,20 @@ function getPageName(size, isPortrait, pageNames) {
}
class PDFDocumentProperties {
+ #fieldData = null;
+
constructor({
- overlayName,
+ dialog,
fields,
- container,
closeButton
}, overlayManager, eventBus, l10n) {
- this.overlayName = overlayName;
+ this.dialog = dialog;
this.fields = fields;
- this.container = container;
this.overlayManager = overlayManager;
this.l10n = l10n;
-
- this._reset();
-
+ this.#reset();
closeButton.addEventListener("click", this.close.bind(this));
- this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
+ this.overlayManager.register(this.dialog);
eventBus._on("pagechanging", evt => {
this._currentPageNumber = evt.pageNumber;
@@ -5201,22 +5139,12 @@ class PDFDocumentProperties {
}
async open() {
- const freezeFieldData = data => {
- Object.defineProperty(this, "fieldData", {
- value: Object.freeze(data),
- writable: false,
- enumerable: true,
- configurable: true
- });
- };
-
- await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]);
+ await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]);
const currentPageNumber = this._currentPageNumber;
const pagesRotation = this._pagesRotation;
- if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) {
- this._updateUI();
-
+ if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) {
+ this.#updateUI();
return;
}
@@ -5225,10 +5153,10 @@ class PDFDocumentProperties {
contentDispositionFilename,
contentLength
} = await this.pdfDocument.getMetadata();
- const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
- return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
- }), this._parseLinearization(info.IsLinearized)]);
- freezeFieldData({
+ const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
+ return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
+ }), this.#parseLinearization(info.IsLinearized)]);
+ this.#fieldData = Object.freeze({
fileName,
fileSize,
title: info.Title,
@@ -5246,9 +5174,7 @@ class PDFDocumentProperties {
_currentPageNumber: currentPageNumber,
_pagesRotation: pagesRotation
});
-
- this._updateUI();
-
+ this.#updateUI();
const {
length
} = await this.pdfDocument.getDownloadInfo();
@@ -5257,22 +5183,20 @@ class PDFDocumentProperties {
return;
}
- const data = Object.assign(Object.create(null), this.fieldData);
- data.fileSize = await this._parseFileSize(length);
- freezeFieldData(data);
-
- this._updateUI();
+ const data = Object.assign(Object.create(null), this.#fieldData);
+ data.fileSize = await this.#parseFileSize(length);
+ this.#fieldData = Object.freeze(data);
+ this.#updateUI();
}
- close() {
- this.overlayManager.close(this.overlayName);
+ async close() {
+ this.overlayManager.close(this.dialog);
}
setDocument(pdfDocument, url = null) {
if (this.pdfDocument) {
- this._reset();
-
- this._updateUI(true);
+ this.#reset();
+ this.#updateUI(true);
}
if (!pdfDocument) {
@@ -5285,17 +5209,17 @@ class PDFDocumentProperties {
this._dataAvailableCapability.resolve();
}
- _reset() {
+ #reset() {
this.pdfDocument = null;
this.url = null;
- delete this.fieldData;
+ this.#fieldData = null;
this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
this._currentPageNumber = 1;
this._pagesRotation = 0;
}
- _updateUI(reset = false) {
- if (reset || !this.fieldData) {
+ #updateUI(reset = false) {
+ if (reset || !this.#fieldData) {
for (const id in this.fields) {
this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
}
@@ -5303,17 +5227,17 @@ class PDFDocumentProperties {
return;
}
- if (this.overlayManager.active !== this.overlayName) {
+ if (this.overlayManager.active !== this.dialog) {
return;
}
for (const id in this.fields) {
- const content = this.fieldData[id];
+ const content = this.#fieldData[id];
this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
}
}
- async _parseFileSize(fileSize = 0) {
+ async #parseFileSize(fileSize = 0) {
const kb = fileSize / 1024,
mb = kb / 1024;
@@ -5328,7 +5252,7 @@ class PDFDocumentProperties {
});
}
- async _parsePageSize(pageSizeInches, pagesRotation) {
+ async #parsePageSize(pageSizeInches, pagesRotation) {
if (!pageSizeInches) {
return undefined;
}
@@ -5387,7 +5311,7 @@ class PDFDocumentProperties {
});
}
- async _parseDate(inputDate) {
+ async #parseDate(inputDate) {
const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate);
if (!dateObject) {
@@ -5400,7 +5324,7 @@ class PDFDocumentProperties {
});
}
- _parseLinearization(isLinearized) {
+ #parseLinearization(isLinearized) {
return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`);
}
@@ -5478,7 +5402,7 @@ class PDFFindBar {
this.dispatchEvent("diacriticmatchingchange");
});
- this.eventBus._on("resize", this._adjustWidth.bind(this));
+ this.eventBus._on("resize", this.#adjustWidth.bind(this));
}
reset() {
@@ -5522,10 +5446,10 @@ class PDFFindBar {
}
this.findField.setAttribute("data-status", status);
+ this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND);
findMsg.then(msg => {
this.findMsg.textContent = msg;
-
- this._adjustWidth();
+ this.#adjustWidth();
});
this.updateResultsCount(matchesCount);
}
@@ -5554,8 +5478,7 @@ class PDFFindBar {
matchCountMsg.then(msg => {
this.findResultsCount.textContent = msg;
-
- this._adjustWidth();
+ this.#adjustWidth();
});
}
@@ -5569,8 +5492,7 @@ class PDFFindBar {
this.findField.select();
this.findField.focus();
-
- this._adjustWidth();
+ this.#adjustWidth();
}
close() {
@@ -5595,7 +5517,7 @@ class PDFFindBar {
}
}
- _adjustWidth() {
+ #adjustWidth() {
if (!this.opened) {
return;
}
@@ -5774,21 +5696,11 @@ class PDFFindController {
}) {
this._linkService = linkService;
this._eventBus = eventBus;
+ this.#reset();
- this._reset();
-
- eventBus._on("find", this._onFind.bind(this));
-
- eventBus._on("findbarclose", this._onFindBarClose.bind(this));
+ eventBus._on("find", this.#onFind.bind(this));
- this.executeCommand = (cmd, state) => {
- console.error("Deprecated method `PDFFindController.executeCommand` called, " + 'please dispatch a "find"-event using the EventBus instead.');
- const eventState = Object.assign(Object.create(null), state, {
- type: cmd.substring("find".length)
- });
-
- this._onFind(eventState);
- };
+ eventBus._on("findbarclose", this.#onFindBarClose.bind(this));
}
get highlightMatches() {
@@ -5813,7 +5725,7 @@ class PDFFindController {
setDocument(pdfDocument) {
if (this._pdfDocument) {
- this._reset();
+ this.#reset();
}
if (!pdfDocument) {
@@ -5825,7 +5737,7 @@ class PDFFindController {
this._firstPageCapability.resolve();
}
- _onFind(state) {
+ #onFind(state) {
if (!state) {
return;
}
@@ -5835,14 +5747,14 @@ class PDFFindController {
type
} = state;
- if (this._state === null || this._shouldDirtyMatch(state)) {
+ if (this._state === null || this.#shouldDirtyMatch(state)) {
this._dirtyMatch = true;
}
this._state = state;
if (type !== "highlightallchange") {
- this._updateUIState(FindState.PENDING);
+ this.#updateUIState(FindState.PENDING);
}
this._firstPageCapability.promise.then(() => {
@@ -5850,8 +5762,7 @@ class PDFFindController {
return;
}
- this._extractText();
-
+ this.#extractText();
const findbarClosed = !this._highlightMatches;
const pendingTimeout = !!this._findTimeout;
@@ -5862,28 +5773,27 @@ class PDFFindController {
if (!type) {
this._findTimeout = setTimeout(() => {
- this._nextMatch();
-
+ this.#nextMatch();
this._findTimeout = null;
}, FIND_TIMEOUT);
} else if (this._dirtyMatch) {
- this._nextMatch();
+ this.#nextMatch();
} else if (type === "again") {
- this._nextMatch();
+ this.#nextMatch();
if (findbarClosed && this._state.highlightAll) {
- this._updateAllPages();
+ this.#updateAllPages();
}
} else if (type === "highlightallchange") {
if (pendingTimeout) {
- this._nextMatch();
+ this.#nextMatch();
} else {
this._highlightMatches = true;
}
- this._updateAllPages();
+ this.#updateAllPages();
} else {
- this._nextMatch();
+ this.#nextMatch();
}
});
}
@@ -5910,7 +5820,7 @@ class PDFFindController {
(0, _ui_utils.scrollIntoView)(element, spot, true);
}
- _reset() {
+ #reset() {
this._highlightMatches = false;
this._scrollMatches = false;
this._pdfDocument = null;
@@ -5940,7 +5850,7 @@ class PDFFindController {
this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
}
- get _query() {
+ get #query() {
if (this._state.query !== this._rawQuery) {
this._rawQuery = this._state.query;
[this._normalizedQuery] = normalize(this._state.query);
@@ -5949,7 +5859,7 @@ class PDFFindController {
return this._normalizedQuery;
}
- _shouldDirtyMatch(state) {
+ #shouldDirtyMatch(state) {
if (state.query !== this._state.query) {
return true;
}
@@ -5972,7 +5882,7 @@ class PDFFindController {
return true;
}
- _isEntireWord(content, startIdx, length) {
+ #isEntireWord(content, startIdx, length) {
let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP);
if (match) {
@@ -5998,14 +5908,14 @@ class PDFFindController {
return true;
}
- _calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {
+ #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {
const matches = [],
matchesLength = [];
const diffs = this._pageDiffs[pageIndex];
let match;
while ((match = query.exec(pageContent)) !== null) {
- if (entireWord && !this._isEntireWord(pageContent, match.index, match[0].length)) {
+ if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) {
continue;
}
@@ -6021,7 +5931,7 @@ class PDFFindController {
this._pageMatchesLength[pageIndex] = matchesLength;
}
- _convertToRegExpString(query, hasDiacritics) {
+ #convertToRegExpString(query, hasDiacritics) {
const {
matchDiacritics
} = this._state;
@@ -6070,8 +5980,8 @@ class PDFFindController {
return [isUnicode, query];
}
- _calculateMatch(pageIndex) {
- let query = this._query;
+ #calculateMatch(pageIndex) {
+ let query = this.#query;
if (query.length === 0) {
return;
@@ -6087,14 +5997,13 @@ class PDFFindController {
let isUnicode = false;
if (phraseSearch) {
- [isUnicode, query] = this._convertToRegExpString(query, hasDiacritics);
+ [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);
} else {
const match = query.match(/\S+/g);
if (match) {
query = match.sort().reverse().map(q => {
- const [isUnicodePart, queryPart] = this._convertToRegExpString(q, hasDiacritics);
-
+ const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics);
isUnicode ||= isUnicodePart;
return `(${queryPart})`;
}).join("|");
@@ -6103,29 +6012,26 @@ class PDFFindController {
const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`;
query = new RegExp(query, flags);
-
- this._calculateRegExpMatch(query, entireWord, pageIndex, pageContent);
+ this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);
if (this._state.highlightAll) {
- this._updatePage(pageIndex);
+ this.#updatePage(pageIndex);
}
if (this._resumePageIdx === pageIndex) {
this._resumePageIdx = null;
-
- this._nextPageMatch();
+ this.#nextPageMatch();
}
const pageMatchesCount = this._pageMatches[pageIndex].length;
if (pageMatchesCount > 0) {
this._matchesCountTotal += pageMatchesCount;
-
- this._updateUIResultsCount();
+ this.#updateUIResultsCount();
}
}
- _extractText() {
+ #extractText() {
if (this._extractTextPromises.length > 0) {
return;
}
@@ -6139,31 +6045,30 @@ class PDFFindController {
return this._pdfDocument.getPage(i + 1).then(pdfPage => {
return pdfPage.getTextContent();
}).then(textContent => {
- const textItems = textContent.items;
const strBuf = [];
- for (let j = 0, jj = textItems.length; j < jj; j++) {
- strBuf.push(textItems[j].str);
+ for (const textItem of textContent.items) {
+ strBuf.push(textItem.str);
- if (textItems[j].hasEOL) {
+ if (textItem.hasEOL) {
strBuf.push("\n");
}
}
[this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join(""));
- extractTextCapability.resolve(i);
+ extractTextCapability.resolve();
}, reason => {
console.error(`Unable to get text content for page ${i + 1}`, reason);
this._pageContents[i] = "";
this._pageDiffs[i] = null;
this._hasDiacritics[i] = false;
- extractTextCapability.resolve(i);
+ extractTextCapability.resolve();
});
});
}
}
- _updatePage(index) {
+ #updatePage(index) {
if (this._scrollMatches && this._selected.pageIdx === index) {
this._linkService.page = index + 1;
}
@@ -6174,14 +6079,14 @@ class PDFFindController {
});
}
- _updateAllPages() {
+ #updateAllPages() {
this._eventBus.dispatch("updatetextlayermatches", {
source: this,
pageIndex: -1
});
}
- _nextMatch() {
+ #nextMatch() {
const previous = this._state.findPrevious;
const currentPageIndex = this._linkService.page - 1;
const numPages = this._linkService.pagesCount;
@@ -6197,8 +6102,7 @@ class PDFFindController {
this._pageMatches.length = 0;
this._pageMatchesLength.length = 0;
this._matchesCountTotal = 0;
-
- this._updateAllPages();
+ this.#updateAllPages();
for (let i = 0; i < numPages; i++) {
if (this._pendingFindMatches.has(i)) {
@@ -6207,17 +6111,16 @@ class PDFFindController {
this._pendingFindMatches.add(i);
- this._extractTextPromises[i].then(pageIdx => {
- this._pendingFindMatches.delete(pageIdx);
+ this._extractTextPromises[i].then(() => {
+ this._pendingFindMatches.delete(i);
- this._calculateMatch(pageIdx);
+ this.#calculateMatch(i);
});
}
}
- if (this._query === "") {
- this._updateUIState(FindState.FOUND);
-
+ if (this.#query === "") {
+ this.#updateUIState(FindState.FOUND);
return;
}
@@ -6233,39 +6136,34 @@ class PDFFindController {
if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
-
- this._updateMatch(true);
-
+ this.#updateMatch(true);
return;
}
- this._advanceOffsetPage(previous);
+ this.#advanceOffsetPage(previous);
}
- this._nextPageMatch();
+ this.#nextPageMatch();
}
- _matchesReady(matches) {
+ #matchesReady(matches) {
const offset = this._offset;
const numMatches = matches.length;
const previous = this._state.findPrevious;
if (numMatches) {
offset.matchIdx = previous ? numMatches - 1 : 0;
-
- this._updateMatch(true);
-
+ this.#updateMatch(true);
return true;
}
- this._advanceOffsetPage(previous);
+ this.#advanceOffsetPage(previous);
if (offset.wrapped) {
offset.matchIdx = null;
if (this._pagesToSearch < 0) {
- this._updateMatch(false);
-
+ this.#updateMatch(false);
return true;
}
}
@@ -6273,7 +6171,7 @@ class PDFFindController {
return false;
}
- _nextPageMatch() {
+ #nextPageMatch() {
if (this._resumePageIdx !== null) {
console.error("There can only be one pending page.");
}
@@ -6288,10 +6186,10 @@ class PDFFindController {
this._resumePageIdx = pageIdx;
break;
}
- } while (!this._matchesReady(matches));
+ } while (!this.#matchesReady(matches));
}
- _advanceOffsetPage(previous) {
+ #advanceOffsetPage(previous) {
const offset = this._offset;
const numPages = this._linkService.pagesCount;
offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
@@ -6304,7 +6202,7 @@ class PDFFindController {
}
}
- _updateMatch(found = false) {
+ #updateMatch(found = false) {
let state = FindState.NOT_FOUND;
const wrapped = this._offset.wrapped;
this._offset.wrapped = false;
@@ -6316,20 +6214,19 @@ class PDFFindController {
state = wrapped ? FindState.WRAPPED : FindState.FOUND;
if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
- this._updatePage(previousPage);
+ this.#updatePage(previousPage);
}
}
- this._updateUIState(state, this._state.findPrevious);
+ this.#updateUIState(state, this._state.findPrevious);
if (this._selected.pageIdx !== -1) {
this._scrollMatches = true;
-
- this._updatePage(this._selected.pageIdx);
+ this.#updatePage(this._selected.pageIdx);
}
}
- _onFindBarClose(evt) {
+ #onFindBarClose(evt) {
const pdfDocument = this._pdfDocument;
this._firstPageCapability.promise.then(() => {
@@ -6347,15 +6244,13 @@ class PDFFindController {
this._dirtyMatch = true;
}
- this._updateUIState(FindState.FOUND);
-
+ this.#updateUIState(FindState.FOUND);
this._highlightMatches = false;
-
- this._updateAllPages();
+ this.#updateAllPages();
});
}
- _requestMatchesCount() {
+ #requestMatchesCount() {
const {
pageIdx,
matchIdx
@@ -6381,19 +6276,19 @@ class PDFFindController {
};
}
- _updateUIResultsCount() {
+ #updateUIResultsCount() {
this._eventBus.dispatch("updatefindmatchescount", {
source: this,
- matchesCount: this._requestMatchesCount()
+ matchesCount: this.#requestMatchesCount()
});
}
- _updateUIState(state, previous = false) {
+ #updateUIState(state, previous = false) {
this._eventBus.dispatch("updatefindcontrolstate", {
source: this,
state,
previous,
- matchesCount: this._requestMatchesCount(),
+ matchesCount: this.#requestMatchesCount(),
rawQuery: this._state?.query ?? null
});
}
@@ -6533,11 +6428,6 @@ class PDFHistory {
this._fingerprint = "";
this.reset();
this._boundEvents = null;
- this._isViewerInPresentationMode = false;
-
- this.eventBus._on("presentationmodechanged", evt => {
- this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL;
- });
this.eventBus._on("pagesinit", () => {
this._isPagesLoaded = false;
@@ -6922,7 +6812,7 @@ class PDFHistory {
}
this._position = {
- hash: this._isViewerInPresentationMode ? `page=${location.pageNumber}` : location.pdfOpenParams.substring(1),
+ hash: location.pdfOpenParams.substring(1),
page: this.linkService.page,
first: location.pageNumber,
rotation: location.rotation
@@ -7643,7 +7533,6 @@ exports.PDFPresentationMode = void 0;
var _ui_utils = __webpack_require__(3);
-const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
const DELAY_BEFORE_HIDING_CONTROLS = 3000;
const ACTIVE_SELECTOR = "pdfPresentationMode";
const CONTROLS_SELECTOR = "pdfPresentationModeControls";
@@ -7653,6 +7542,9 @@ const SWIPE_MIN_DISTANCE_THRESHOLD = 50;
const SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
class PDFPresentationMode {
+ #state = _ui_utils.PresentationModeState.UNKNOWN;
+ #args = null;
+
constructor({
container,
pdfViewer,
@@ -7661,30 +7553,50 @@ class PDFPresentationMode {
this.container = container;
this.pdfViewer = pdfViewer;
this.eventBus = eventBus;
- this.active = false;
- this.args = null;
this.contextMenuOpen = false;
this.mouseScrollTimeStamp = 0;
this.mouseScrollDelta = 0;
this.touchSwipeState = null;
}
- request() {
- if (this.switchInProgress || this.active || !this.pdfViewer.pagesCount || !this.container.requestFullscreen) {
+ async request() {
+ const {
+ container,
+ pdfViewer
+ } = this;
+
+ if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {
return false;
}
this.#addFullscreenChangeListeners();
- this.#setSwitchInProgress();
- this.#notifyStateChange();
- this.container.requestFullscreen();
- this.args = {
- pageNumber: this.pdfViewer.currentPageNumber,
- scaleValue: this.pdfViewer.currentScaleValue,
- scrollMode: this.pdfViewer.scrollMode,
- spreadMode: this.pdfViewer.spreadMode
+ this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING);
+ const promise = container.requestFullscreen();
+ this.#args = {
+ pageNumber: pdfViewer.currentPageNumber,
+ scaleValue: pdfViewer.currentScaleValue,
+ scrollMode: pdfViewer.scrollMode,
+ spreadMode: null
};
- return true;
+
+ if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) {
+ console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes.");
+ this.#args.spreadMode = pdfViewer.spreadMode;
+ }
+
+ try {
+ await promise;
+ return true;
+ } catch (reason) {
+ this.#removeFullscreenChangeListeners();
+ this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
+ }
+
+ return false;
+ }
+
+ get active() {
+ return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN;
}
#mouseWheel(evt) {
@@ -7718,49 +7630,25 @@ class PDFPresentationMode {
}
}
- #notifyStateChange() {
- let state = _ui_utils.PresentationModeState.NORMAL;
-
- if (this.switchInProgress) {
- state = _ui_utils.PresentationModeState.CHANGING;
- } else if (this.active) {
- state = _ui_utils.PresentationModeState.FULLSCREEN;
- }
-
+ #notifyStateChange(state) {
+ this.#state = state;
this.eventBus.dispatch("presentationmodechanged", {
source: this,
state
});
}
- #setSwitchInProgress() {
- if (this.switchInProgress) {
- clearTimeout(this.switchInProgress);
- }
-
- this.switchInProgress = setTimeout(() => {
- this.#removeFullscreenChangeListeners();
- delete this.switchInProgress;
- this.#notifyStateChange();
- }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
- }
-
- #resetSwitchInProgress() {
- if (this.switchInProgress) {
- clearTimeout(this.switchInProgress);
- delete this.switchInProgress;
- }
- }
-
#enter() {
- this.active = true;
- this.#resetSwitchInProgress();
- this.#notifyStateChange();
+ this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN);
this.container.classList.add(ACTIVE_SELECTOR);
setTimeout(() => {
this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE;
- this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE;
- this.pdfViewer.currentPageNumber = this.args.pageNumber;
+
+ if (this.#args.spreadMode !== null) {
+ this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE;
+ }
+
+ this.pdfViewer.currentPageNumber = this.#args.pageNumber;
this.pdfViewer.currentScaleValue = "page-fit";
}, 0);
this.#addWindowListeners();
@@ -7773,14 +7661,17 @@ class PDFPresentationMode {
const pageNumber = this.pdfViewer.currentPageNumber;
this.container.classList.remove(ACTIVE_SELECTOR);
setTimeout(() => {
- this.active = false;
this.#removeFullscreenChangeListeners();
- this.#notifyStateChange();
- this.pdfViewer.scrollMode = this.args.scrollMode;
- this.pdfViewer.spreadMode = this.args.spreadMode;
- this.pdfViewer.currentScaleValue = this.args.scaleValue;
+ this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL);
+ this.pdfViewer.scrollMode = this.#args.scrollMode;
+
+ if (this.#args.spreadMode !== null) {
+ this.pdfViewer.spreadMode = this.#args.spreadMode;
+ }
+
+ this.pdfViewer.currentScaleValue = this.#args.scaleValue;
this.pdfViewer.currentPageNumber = pageNumber;
- this.args = null;
+ this.#args = null;
}, 0);
this.#removeWindowListeners();
this.#hideControls();
@@ -8250,7 +8141,7 @@ class PDFScriptingManager {
}
for (const [name, listener] of this._domEvents) {
- window.addEventListener(name, listener);
+ window.addEventListener(name, listener, true);
}
try {
@@ -8595,7 +8486,7 @@ class PDFScriptingManager {
this._internalEvents.clear();
for (const [name, listener] of this._domEvents) {
- window.removeEventListener(name, listener);
+ window.removeEventListener(name, listener, true);
}
this._domEvents.clear();
@@ -8644,7 +8535,7 @@ class PDFSidebar {
this.pdfViewer = pdfViewer;
this.pdfThumbnailViewer = pdfThumbnailViewer;
this.outerContainer = elements.outerContainer;
- this.viewerContainer = elements.viewerContainer;
+ this.sidebarContainer = elements.sidebarContainer;
this.toggleButton = elements.toggleButton;
this.thumbnailButton = elements.thumbnailButton;
this.outlineButton = elements.outlineButton;
@@ -8763,16 +8654,24 @@ class PDFSidebar {
}
this.active = view;
- this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS);
- this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE);
- this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS);
- this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS);
- this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS);
- this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
- this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS);
- this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS);
-
- this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE);
+ const isThumbs = view === _ui_utils.SidebarView.THUMBS,
+ isOutline = view === _ui_utils.SidebarView.OUTLINE,
+ isAttachments = view === _ui_utils.SidebarView.ATTACHMENTS,
+ isLayers = view === _ui_utils.SidebarView.LAYERS;
+ this.thumbnailButton.classList.toggle("toggled", isThumbs);
+ this.outlineButton.classList.toggle("toggled", isOutline);
+ this.attachmentsButton.classList.toggle("toggled", isAttachments);
+ this.layersButton.classList.toggle("toggled", isLayers);
+ this.thumbnailButton.setAttribute("aria-checked", isThumbs);
+ this.outlineButton.setAttribute("aria-checked", isOutline);
+ this.attachmentsButton.setAttribute("aria-checked", isAttachments);
+ this.layersButton.setAttribute("aria-checked", isLayers);
+ this.thumbnailView.classList.toggle("hidden", !isThumbs);
+ this.outlineView.classList.toggle("hidden", !isOutline);
+ this.attachmentsView.classList.toggle("hidden", !isAttachments);
+ this.layersView.classList.toggle("hidden", !isLayers);
+
+ this._outlineOptionsContainer.classList.toggle("hidden", !isOutline);
if (forceOpen && !this.isOpen) {
this.open();
@@ -8895,8 +8794,8 @@ class PDFSidebar {
}
_addEventListeners() {
- this.viewerContainer.addEventListener("transitionend", evt => {
- if (evt.target === this.viewerContainer) {
+ this.sidebarContainer.addEventListener("transitionend", evt => {
+ if (evt.target === this.sidebarContainer) {
this.outerContainer.classList.remove("sidebarMoving");
}
});
@@ -9238,9 +9137,9 @@ class PDFThumbnailViewer {
}
cleanup() {
- for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
- if (this._thumbnails[i] && this._thumbnails[i].renderingState !== _ui_utils.RenderingStates.FINISHED) {
- this._thumbnails[i].reset();
+ for (const thumbnail of this._thumbnails) {
+ if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ thumbnail.reset();
}
}
@@ -9312,10 +9211,8 @@ class PDFThumbnailViewer {
}
_cancelRendering() {
- for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
- if (this._thumbnails[i]) {
- this._thumbnails[i].cancelRendering();
- }
+ for (const thumbnail of this._thumbnails) {
+ thumbnail.cancelRendering();
}
}
@@ -9414,7 +9311,6 @@ class TempImageFactory {
const tempCanvas = this.#tempCanvas ||= document.createElement("canvas");
tempCanvas.width = width;
tempCanvas.height = height;
- tempCanvas.mozOpaque = true;
const ctx = tempCanvas.getContext("2d", {
alpha: false
});
@@ -9568,7 +9464,6 @@ class PDFThumbnailView {
_getPageDrawContext(upscaleFactor = 1) {
const canvas = document.createElement("canvas");
- canvas.mozOpaque = true;
const ctx = canvas.getContext("2d", {
alpha: false
});
@@ -9943,7 +9838,7 @@ class BaseViewer {
throw new Error("Cannot initialize BaseViewer.");
}
- const viewerVersion = '2.13.216';
+ const viewerVersion = '2.14.305';
if (_pdfjsLib.version !== viewerVersion) {
throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`);
@@ -9975,6 +9870,16 @@ class BaseViewer {
this.maxCanvasPixels = options.maxCanvasPixels;
this.l10n = options.l10n || _l10n_utils.NullL10n;
this.#enablePermissions = options.enablePermissions || false;
+ this.pageColors = options.pageColors || null;
+
+ if (options.pageColors && (!CSS.supports("color", options.pageColors.background) || !CSS.supports("color", options.pageColors.foreground))) {
+ if (options.pageColors.background || options.pageColors.foreground) {
+ console.warn("Ignoring `pageColors`-option, since the browser doesn't support the values used.");
+ }
+
+ this.pageColors = null;
+ }
+
this.defaultRenderingQueue = !options.renderingQueue;
if (this.defaultRenderingQueue) {
@@ -9995,6 +9900,7 @@ class BaseViewer {
this.viewer.classList.add("removePageBorders");
}
+ this.updateContainerHeightCss();
Promise.resolve().then(() => {
this.eventBus.dispatch("baseviewerinit", {
source: this
@@ -10049,7 +9955,7 @@ class BaseViewer {
_setCurrentPageNumber(val, resetCurrentPageView = false) {
if (this._currentPageNumber === val) {
if (resetCurrentPageView) {
- this._resetCurrentPageView();
+ this.#resetCurrentPageView();
}
return true;
@@ -10069,7 +9975,7 @@ class BaseViewer {
});
if (resetCurrentPageView) {
- this._resetCurrentPageView();
+ this.#resetCurrentPageView();
}
return true;
@@ -10343,6 +10249,7 @@ class BaseViewer {
renderer: this.renderer,
useOnlyCssZoom: this.useOnlyCssZoom,
maxCanvasPixels: this.maxCanvasPixels,
+ pageColors: this.pageColors,
l10n: this.l10n
});
@@ -10518,28 +10425,17 @@ class BaseViewer {
viewer.textContent = "";
state.pages.length = 0;
- if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
+ if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) {
const pageView = this._pages[pageNumber - 1];
-
- if (this.isInPresentationMode) {
- const spread = document.createElement("div");
- spread.className = "spread";
- const dummyPage = document.createElement("div");
- dummyPage.className = "dummyPage";
- dummyPage.style.height = `${this.container.clientHeight}px`;
- spread.appendChild(dummyPage);
- spread.appendChild(pageView.div);
- viewer.appendChild(spread);
- } else {
- viewer.appendChild(pageView.div);
- }
-
+ viewer.appendChild(pageView.div);
state.pages.push(pageView);
} else {
const pageIndexSet = new Set(),
parity = this._spreadMode - 1;
- if (pageNumber % 2 !== parity) {
+ if (parity === -1) {
+ pageIndexSet.add(pageNumber - 1);
+ } else if (pageNumber % 2 !== parity) {
pageIndexSet.add(pageNumber - 1);
pageIndexSet.add(pageNumber);
} else {
@@ -10547,7 +10443,14 @@ class BaseViewer {
pageIndexSet.add(pageNumber - 1);
}
- let spread = null;
+ const spread = document.createElement("div");
+ spread.className = "spread";
+
+ if (this.isInPresentationMode) {
+ const dummyPage = document.createElement("div");
+ dummyPage.className = "dummyPage";
+ spread.appendChild(dummyPage);
+ }
for (const i of pageIndexSet) {
const pageView = this._pages[i];
@@ -10556,18 +10459,11 @@ class BaseViewer {
continue;
}
- if (spread === null) {
- spread = document.createElement("div");
- spread.className = "spread";
- viewer.appendChild(spread);
- } else if (i % 2 === parity) {
- spread = spread.cloneNode(false);
- viewer.appendChild(spread);
- }
-
spread.appendChild(pageView.div);
state.pages.push(pageView);
}
+
+ viewer.appendChild(spread);
}
state.scrollDown = pageNumber >= state.previousPageNumber;
@@ -10582,23 +10478,22 @@ class BaseViewer {
this.update();
}
- _scrollIntoView({
- pageDiv,
- pageSpot = null,
- pageNumber = null
- }) {
+ #scrollIntoView(pageView, pageSpot = null) {
+ const {
+ div,
+ id
+ } = pageView;
+
if (this._scrollMode === _ui_utils.ScrollMode.PAGE) {
- if (pageNumber) {
- this._setCurrentPageNumber(pageNumber);
- }
+ this._setCurrentPageNumber(id);
this.#ensurePageViewVisible();
this.update();
}
if (!pageSpot && !this.isInPresentationMode) {
- const left = pageDiv.offsetLeft + pageDiv.clientLeft;
- const right = left + pageDiv.clientWidth;
+ const left = div.offsetLeft + div.clientLeft,
+ right = left + div.clientWidth;
const {
scrollLeft,
clientWidth
@@ -10612,14 +10507,10 @@ class BaseViewer {
}
}
- (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
+ (0, _ui_utils.scrollIntoView)(div, pageSpot);
}
#isSameScale(newScale) {
- if (this.isInPresentationMode && this.container.clientHeight !== this.#previousContainerHeight) {
- return false;
- }
-
return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15;
}
@@ -10640,8 +10531,6 @@ class BaseViewer {
this._doc.style.setProperty("--zoom-factor", newScale);
- this._doc.style.setProperty("--viewport-scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS);
-
const updateArgs = {
scale: newScale
};
@@ -10680,7 +10569,7 @@ class BaseViewer {
this.update();
}
- this.#previousContainerHeight = this.container.clientHeight;
+ this.updateContainerHeightCss();
}
get _pageWidthScaleFactor() {
@@ -10710,9 +10599,7 @@ class BaseViewer {
hPadding = vPadding = 4;
} else if (this.removePageBorders) {
hPadding = vPadding = 0;
- }
-
- if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) {
+ } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) {
[hPadding, vPadding] = [vPadding, hPadding];
}
@@ -10750,16 +10637,14 @@ class BaseViewer {
}
}
- _resetCurrentPageView() {
+ #resetCurrentPageView() {
+ const pageView = this._pages[this._currentPageNumber - 1];
+
if (this.isInPresentationMode) {
this._setScale(this._currentScaleValue, true);
}
- const pageView = this._pages[this._currentPageNumber - 1];
-
- this._scrollIntoView({
- pageDiv: pageView.div
- });
+ this.#scrollIntoView(pageView);
}
pageLabelToPageNumber(label) {
@@ -10872,11 +10757,7 @@ class BaseViewer {
}
if (scale === "page-fit" && !destArray[4]) {
- this._scrollIntoView({
- pageDiv: pageView.div,
- pageNumber
- });
-
+ this.#scrollIntoView(pageView);
return;
}
@@ -10889,13 +10770,9 @@ class BaseViewer {
top = Math.max(top, 0);
}
- this._scrollIntoView({
- pageDiv: pageView.div,
- pageSpot: {
- left,
- top
- },
- pageNumber
+ this.#scrollIntoView(pageView, {
+ left,
+ top
});
}
@@ -10904,14 +10781,17 @@ class BaseViewer {
const currentScaleValue = this._currentScaleValue;
const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
const pageNumber = firstPage.id;
- let pdfOpenParams = "#page=" + pageNumber;
- pdfOpenParams += "&zoom=" + normalizedScaleValue;
const currentPageView = this._pages[pageNumber - 1];
const container = this.container;
const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
const intLeft = Math.round(topLeft[0]);
const intTop = Math.round(topLeft[1]);
- pdfOpenParams += "," + intLeft + "," + intTop;
+ let pdfOpenParams = `#page=${pageNumber}`;
+
+ if (!this.isInPresentationMode) {
+ pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;
+ }
+
this._location = {
pageNumber,
scale: normalizedScaleValue,
@@ -10935,30 +10815,23 @@ class BaseViewer {
const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
this.#buffer.resize(newCacheSize, visible.ids);
this.renderingQueue.renderHighestPriority(visible);
+ const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL);
+ const currentId = this._currentPageNumber;
+ let stillFullyVisible = false;
- if (!this.isInPresentationMode) {
- const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL);
- let currentId = this._currentPageNumber;
- let stillFullyVisible = false;
-
- for (const page of visiblePages) {
- if (page.percent < 100) {
- break;
- }
-
- if (page.id === currentId && isSimpleLayout) {
- stillFullyVisible = true;
- break;
- }
+ for (const page of visiblePages) {
+ if (page.percent < 100) {
+ break;
}
- if (!stillFullyVisible) {
- currentId = visiblePages[0].id;
+ if (page.id === currentId && isSimpleLayout) {
+ stillFullyVisible = true;
+ break;
}
-
- this._setCurrentPageNumber(currentId);
}
+ this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id);
+
this._updateLocation(visible.first);
this.eventBus.dispatch("updateviewarea", {
@@ -10995,35 +10868,7 @@ class BaseViewer {
return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
}
- _getCurrentVisiblePage() {
- if (!this.pagesCount) {
- return {
- views: []
- };
- }
-
- const pageView = this._pages[this._currentPageNumber - 1];
- const element = pageView.div;
- const view = {
- id: pageView.id,
- x: element.offsetLeft + element.clientLeft,
- y: element.offsetTop + element.clientTop,
- view: pageView
- };
- const ids = new Set([pageView.id]);
- return {
- first: view,
- last: view,
- views: [view],
- ids
- };
- }
-
_getVisiblePages() {
- if (this.isInPresentationMode) {
- return this._getCurrentVisiblePage();
- }
-
const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages,
horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL,
rtl = horizontal && this._isContainerRtl;
@@ -11064,18 +10909,16 @@ class BaseViewer {
}
cleanup() {
- for (let i = 0, ii = this._pages.length; i < ii; i++) {
- if (this._pages[i] && this._pages[i].renderingState !== _ui_utils.RenderingStates.FINISHED) {
- this._pages[i].reset();
+ for (const pageView of this._pages) {
+ if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) {
+ pageView.reset();
}
}
}
_cancelRendering() {
- for (let i = 0, ii = this._pages.length; i < ii; i++) {
- if (this._pages[i]) {
- this._pages[i].cancelRendering();
- }
+ for (const pageView of this._pages) {
+ pageView.cancelRendering();
}
}
@@ -11370,8 +11213,8 @@ class BaseViewer {
viewer.textContent = "";
if (this._spreadMode === _ui_utils.SpreadMode.NONE) {
- for (let i = 0, ii = pages.length; i < ii; ++i) {
- viewer.appendChild(pages[i].div);
+ for (const pageView of this._pages) {
+ viewer.appendChild(pageView.div);
}
} else {
const parity = this._spreadMode - 1;
@@ -11583,6 +11426,16 @@ class BaseViewer {
this.currentScaleValue = newScale;
}
+ updateContainerHeightCss() {
+ const height = this.container.clientHeight;
+
+ if (height !== this.#previousContainerHeight) {
+ this.#previousContainerHeight = height;
+
+ this._doc.style.setProperty("--viewer-container-height", `${height}px`);
+ }
+ }
+
}
exports.BaseViewer = BaseViewer;
@@ -11863,6 +11716,7 @@ class PDFPageView {
this.imageResourcesPath = options.imageResourcesPath || "";
this.useOnlyCssZoom = options.useOnlyCssZoom || false;
this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
+ this.pageColors = options.pageColors || null;
this.eventBus = options.eventBus;
this.renderingQueue = options.renderingQueue;
this.textLayerFactory = options.textLayerFactory;
@@ -12059,16 +11913,6 @@ class PDFPageView {
rotation = null,
optionalContentConfigPromise = null
}) {
- if (typeof arguments[0] !== "object") {
- console.error("PDFPageView.update called with separate parameters, please use an object instead.");
- this.update({
- scale: arguments[0],
- rotation: arguments[1],
- optionalContentConfigPromise: arguments[2]
- });
- return;
- }
-
this.scale = scale || this.scale;
if (typeof rotation === "number") {
@@ -12080,9 +11924,8 @@ class PDFPageView {
}
const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
- const viewportScale = this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
this.viewport = this.viewport.clone({
- scale: viewportScale,
+ scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
rotation: totalRotation
});
@@ -12091,7 +11934,6 @@ class PDFPageView {
style
} = document.documentElement;
style.setProperty("--zoom-factor", this.scale);
- style.setProperty("--viewport-scale-factor", viewportScale);
}
if (this.svg) {
@@ -12493,7 +12335,6 @@ class PDFPageView {
canvasWrapper.appendChild(canvas);
this.canvas = canvas;
- canvas.mozOpaque = true;
const ctx = canvas.getContext("2d", {
alpha: false
});
@@ -12534,7 +12375,8 @@ class PDFPageView {
viewport: this.viewport,
annotationMode: this.#annotationMode,
optionalContentConfigPromise: this._optionalContentConfigPromise,
- annotationCanvasMap: this._annotationCanvasMap
+ annotationCanvasMap: this._annotationCanvasMap,
+ pageColors: this.pageColors
};
const renderTask = this.pdfPage.render(renderContext);
@@ -13284,19 +13126,14 @@ var _pdf_cursor_tools = __webpack_require__(6);
var _base_viewer = __webpack_require__(28);
class SecondaryToolbar {
- constructor(options, mainContainer, eventBus) {
+ constructor(options, eventBus) {
this.toolbar = options.toolbar;
this.toggleButton = options.toggleButton;
- this.toolbarButtonContainer = options.toolbarButtonContainer;
this.buttons = [{
element: options.presentationModeButton,
eventName: "presentationmode",
close: true
}, {
- element: options.openFileButton,
- eventName: "openfile",
- close: true
- }, {
element: options.printButton,
eventName: "print",
close: true
@@ -13392,28 +13229,24 @@ class SecondaryToolbar {
eventName: "documentproperties",
close: true
}];
+ this.buttons.push({
+ element: options.openFileButton,
+ eventName: "openfile",
+ close: true
+ });
this.items = {
firstPage: options.firstPageButton,
lastPage: options.lastPageButton,
pageRotateCw: options.pageRotateCwButton,
pageRotateCcw: options.pageRotateCcwButton
};
- this.mainContainer = mainContainer;
this.eventBus = eventBus;
this.opened = false;
- this.containerHeight = null;
- this.previousContainerHeight = null;
this.reset();
-
- this._bindClickListeners();
-
- this._bindCursorToolsListener(options);
-
- this._bindScrollModeListener(options);
-
- this._bindSpreadModeListener(options);
-
- this.eventBus._on("resize", this._setMaxHeight.bind(this));
+ this.#bindClickListeners();
+ this.#bindCursorToolsListener(options);
+ this.#bindScrollModeListener(options);
+ this.#bindSpreadModeListener(options);
}
get isOpen() {
@@ -13422,35 +13255,31 @@ class SecondaryToolbar {
setPageNumber(pageNumber) {
this.pageNumber = pageNumber;
-
- this._updateUIState();
+ this.#updateUIState();
}
setPagesCount(pagesCount) {
this.pagesCount = pagesCount;
-
- this._updateUIState();
+ this.#updateUIState();
}
reset() {
this.pageNumber = 0;
this.pagesCount = 0;
-
- this._updateUIState();
-
+ this.#updateUIState();
this.eventBus.dispatch("secondarytoolbarreset", {
source: this
});
}
- _updateUIState() {
+ #updateUIState() {
this.items.firstPage.disabled = this.pageNumber <= 1;
this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
this.items.pageRotateCw.disabled = this.pagesCount === 0;
this.items.pageRotateCcw.disabled = this.pagesCount === 0;
}
- _bindClickListeners() {
+ #bindClickListeners() {
this.toggleButton.addEventListener("click", this.toggle.bind(this));
for (const {
@@ -13479,32 +13308,54 @@ class SecondaryToolbar {
}
}
- _bindCursorToolsListener(buttons) {
+ #bindCursorToolsListener({
+ cursorSelectToolButton,
+ cursorHandToolButton
+ }) {
this.eventBus._on("cursortoolchanged", function ({
tool
}) {
- buttons.cursorSelectToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.SELECT);
- buttons.cursorHandToolButton.classList.toggle("toggled", tool === _pdf_cursor_tools.CursorTool.HAND);
- });
- }
-
- _bindScrollModeListener(buttons) {
+ const isSelect = tool === _pdf_cursor_tools.CursorTool.SELECT,
+ isHand = tool === _pdf_cursor_tools.CursorTool.HAND;
+ cursorSelectToolButton.classList.toggle("toggled", isSelect);
+ cursorHandToolButton.classList.toggle("toggled", isHand);
+ cursorSelectToolButton.setAttribute("aria-checked", isSelect);
+ cursorHandToolButton.setAttribute("aria-checked", isHand);
+ });
+ }
+
+ #bindScrollModeListener({
+ scrollPageButton,
+ scrollVerticalButton,
+ scrollHorizontalButton,
+ scrollWrappedButton,
+ spreadNoneButton,
+ spreadOddButton,
+ spreadEvenButton
+ }) {
const scrollModeChanged = ({
mode
}) => {
- buttons.scrollPageButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.PAGE);
- buttons.scrollVerticalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.VERTICAL);
- buttons.scrollHorizontalButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.HORIZONTAL);
- buttons.scrollWrappedButton.classList.toggle("toggled", mode === _ui_utils.ScrollMode.WRAPPED);
+ const isPage = mode === _ui_utils.ScrollMode.PAGE,
+ isVertical = mode === _ui_utils.ScrollMode.VERTICAL,
+ isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL,
+ isWrapped = mode === _ui_utils.ScrollMode.WRAPPED;
+ scrollPageButton.classList.toggle("toggled", isPage);
+ scrollVerticalButton.classList.toggle("toggled", isVertical);
+ scrollHorizontalButton.classList.toggle("toggled", isHorizontal);
+ scrollWrappedButton.classList.toggle("toggled", isWrapped);
+ scrollPageButton.setAttribute("aria-checked", isPage);
+ scrollVerticalButton.setAttribute("aria-checked", isVertical);
+ scrollHorizontalButton.setAttribute("aria-checked", isHorizontal);
+ scrollWrappedButton.setAttribute("aria-checked", isWrapped);
const forceScrollModePage = this.pagesCount > _base_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE;
- buttons.scrollPageButton.disabled = forceScrollModePage;
- buttons.scrollVerticalButton.disabled = forceScrollModePage;
- buttons.scrollHorizontalButton.disabled = forceScrollModePage;
- buttons.scrollWrappedButton.disabled = forceScrollModePage;
- const isScrollModeHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL;
- buttons.spreadNoneButton.disabled = isScrollModeHorizontal;
- buttons.spreadOddButton.disabled = isScrollModeHorizontal;
- buttons.spreadEvenButton.disabled = isScrollModeHorizontal;
+ scrollPageButton.disabled = forceScrollModePage;
+ scrollVerticalButton.disabled = forceScrollModePage;
+ scrollHorizontalButton.disabled = forceScrollModePage;
+ scrollWrappedButton.disabled = forceScrollModePage;
+ spreadNoneButton.disabled = isHorizontal;
+ spreadOddButton.disabled = isHorizontal;
+ spreadEvenButton.disabled = isHorizontal;
};
this.eventBus._on("scrollmodechanged", scrollModeChanged);
@@ -13518,13 +13369,23 @@ class SecondaryToolbar {
});
}
- _bindSpreadModeListener(buttons) {
+ #bindSpreadModeListener({
+ spreadNoneButton,
+ spreadOddButton,
+ spreadEvenButton
+ }) {
function spreadModeChanged({
mode
}) {
- buttons.spreadNoneButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.NONE);
- buttons.spreadOddButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.ODD);
- buttons.spreadEvenButton.classList.toggle("toggled", mode === _ui_utils.SpreadMode.EVEN);
+ const isNone = mode === _ui_utils.SpreadMode.NONE,
+ isOdd = mode === _ui_utils.SpreadMode.ODD,
+ isEven = mode === _ui_utils.SpreadMode.EVEN;
+ spreadNoneButton.classList.toggle("toggled", isNone);
+ spreadOddButton.classList.toggle("toggled", isOdd);
+ spreadEvenButton.classList.toggle("toggled", isEven);
+ spreadNoneButton.setAttribute("aria-checked", isNone);
+ spreadOddButton.setAttribute("aria-checked", isOdd);
+ spreadEvenButton.setAttribute("aria-checked", isEven);
}
this.eventBus._on("spreadmodechanged", spreadModeChanged);
@@ -13544,9 +13405,6 @@ class SecondaryToolbar {
}
this.opened = true;
-
- this._setMaxHeight();
-
this.toggleButton.classList.add("toggled");
this.toggleButton.setAttribute("aria-expanded", "true");
this.toolbar.classList.remove("hidden");
@@ -13571,21 +13429,6 @@ class SecondaryToolbar {
}
}
- _setMaxHeight() {
- if (!this.opened) {
- return;
- }
-
- this.containerHeight = this.mainContainer.clientHeight;
-
- if (this.containerHeight === this.previousContainerHeight) {
- return;
- }
-
- this.toolbarButtonContainer.style.maxHeight = `${this.containerHeight - _ui_utils.SCROLLBAR_PADDING}px`;
- this.previousContainerHeight = this.containerHeight;
- }
-
}
exports.SecondaryToolbar = SecondaryToolbar;
@@ -13623,9 +13466,6 @@ class Toolbar {
element: options.zoomOut,
eventName: "zoomout"
}, {
- element: options.openFile,
- eventName: "openfile"
- }, {
element: options.print,
eventName: "print"
}, {
@@ -13638,6 +13478,10 @@ class Toolbar {
element: options.viewBookmark,
eventName: null
}];
+ this.buttons.push({
+ element: options.openFile,
+ eventName: "openfile"
+ });
this.items = {
numPages: options.numPages,
pageNumber: options.pageNumber,
@@ -13738,8 +13582,7 @@ class Toolbar {
this.eventBus._on("localized", () => {
this._wasLocalized = true;
-
- this._adjustScaleWidth();
+ this.#adjustScaleWidth();
this._updateUIState(true);
});
@@ -13816,21 +13659,20 @@ class Toolbar {
pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);
}
- async _adjustScaleWidth() {
+ async #adjustScaleWidth() {
const {
items,
l10n
} = this;
const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]);
+ await _ui_utils.animationStarted;
const style = getComputedStyle(items.scaleSelect),
scaleSelectContainerWidth = parseInt(style.getPropertyValue("--scale-select-container-width"), 10),
scaleSelectOverflow = parseInt(style.getPropertyValue("--scale-select-overflow"), 10);
- let canvas = document.createElement("canvas");
- canvas.mozOpaque = true;
- let ctx = canvas.getContext("2d", {
+ const canvas = document.createElement("canvas");
+ const ctx = canvas.getContext("2d", {
alpha: false
});
- await _ui_utils.animationStarted;
ctx.font = `${style.fontSize} ${style.fontFamily}`;
let maxWidth = 0;
@@ -13853,7 +13695,6 @@ class Toolbar {
canvas.width = 0;
canvas.height = 0;
- canvas = ctx = null;
}
}
@@ -14030,49 +13871,48 @@ exports.BasePreferences = void 0;
var _app_options = __webpack_require__(1);
class BasePreferences {
+ #defaults = Object.freeze({
+ "annotationMode": 2,
+ "cursorToolOnLoad": 0,
+ "defaultZoomValue": "",
+ "disablePageLabels": false,
+ "enablePermissions": false,
+ "enablePrintAutoRotate": true,
+ "enableScripting": true,
+ "externalLinkTarget": 0,
+ "historyUpdateUrl": false,
+ "ignoreDestinationZoom": false,
+ "pageColorsBackground": "Canvas",
+ "pageColorsForeground": "CanvasText",
+ "pdfBugEnabled": false,
+ "renderer": "canvas",
+ "sidebarViewOnLoad": -1,
+ "scrollModeOnLoad": -1,
+ "spreadModeOnLoad": -1,
+ "textLayerMode": 1,
+ "useOnlyCssZoom": false,
+ "viewerCssTheme": 0,
+ "viewOnLoad": 0,
+ "disableAutoFetch": false,
+ "disableFontFace": false,
+ "disableRange": false,
+ "disableStream": false,
+ "enableXfa": true
+ });
+ #prefs = Object.create(null);
+ #initializedPromise = null;
+
constructor() {
if (this.constructor === BasePreferences) {
throw new Error("Cannot initialize BasePreferences.");
}
- Object.defineProperty(this, "defaults", {
- value: Object.freeze({
- "annotationMode": 2,
- "cursorToolOnLoad": 0,
- "defaultZoomValue": "",
- "disablePageLabels": false,
- "enablePermissions": false,
- "enablePrintAutoRotate": true,
- "enableScripting": true,
- "externalLinkTarget": 0,
- "historyUpdateUrl": false,
- "ignoreDestinationZoom": false,
- "pdfBugEnabled": false,
- "renderer": "canvas",
- "sidebarViewOnLoad": -1,
- "scrollModeOnLoad": -1,
- "spreadModeOnLoad": -1,
- "textLayerMode": 1,
- "useOnlyCssZoom": false,
- "viewerCssTheme": 0,
- "viewOnLoad": 0,
- "disableAutoFetch": false,
- "disableFontFace": false,
- "disableRange": false,
- "disableStream": false,
- "enableXfa": true
- }),
- writable: false,
- enumerable: true,
- configurable: false
- });
- this.prefs = Object.create(null);
- this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => {
- for (const name in this.defaults) {
+ this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => {
+ for (const name in this.#defaults) {
const prefValue = prefs?.[name];
- if (typeof prefValue === typeof this.defaults[name]) {
- this.prefs[name] = prefValue;
+ if (typeof prefValue === typeof this.#defaults[name]) {
+ this.#prefs[name] = prefValue;
}
}
});
@@ -14087,14 +13927,19 @@ class BasePreferences {
}
async reset() {
- await this._initializedPromise;
- this.prefs = Object.create(null);
- return this._writeToStorage(this.defaults);
+ await this.#initializedPromise;
+ const prefs = this.#prefs;
+ this.#prefs = Object.create(null);
+ return this._writeToStorage(this.#defaults).catch(reason => {
+ this.#prefs = prefs;
+ throw reason;
+ });
}
async set(name, value) {
- await this._initializedPromise;
- const defaultValue = this.defaults[name];
+ await this.#initializedPromise;
+ const defaultValue = this.#defaults[name],
+ prefs = this.#prefs;
if (defaultValue === undefined) {
throw new Error(`Set preference: "${name}" is undefined.`);
@@ -14102,8 +13947,8 @@ class BasePreferences {
throw new Error("Set preference: no value is specified.");
}
- const valueType = typeof value;
- const defaultType = typeof defaultValue;
+ const valueType = typeof value,
+ defaultType = typeof defaultValue;
if (valueType !== defaultType) {
if (valueType === "number" && defaultType === "string") {
@@ -14117,29 +13962,30 @@ class BasePreferences {
}
}
- this.prefs[name] = value;
- return this._writeToStorage(this.prefs);
+ this.#prefs[name] = value;
+ return this._writeToStorage(this.#prefs).catch(reason => {
+ this.#prefs = prefs;
+ throw reason;
+ });
}
async get(name) {
- await this._initializedPromise;
- const defaultValue = this.defaults[name],
- prefValue = this.prefs[name];
+ await this.#initializedPromise;
+ const defaultValue = this.#defaults[name];
if (defaultValue === undefined) {
throw new Error(`Get preference: "${name}" is undefined.`);
}
- return prefValue !== undefined ? prefValue : defaultValue;
+ return this.#prefs[name] ?? defaultValue;
}
async getAll() {
- await this._initializedPromise;
+ await this.#initializedPromise;
const obj = Object.create(null);
- for (const name in this.defaults) {
- const prefValue = this.prefs[name];
- obj[name] = prefValue !== undefined ? prefValue : this.defaults[name];
+ for (const name in this.#defaults) {
+ obj[name] = this.#prefs[name] ?? this.#defaults[name];
}
return obj;
@@ -15205,6 +15051,7 @@ var _app = __webpack_require__(2);
var _print_utils = __webpack_require__(46);
let activeService = null;
+let dialog = null;
let overlayManager = null;
function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise) {
@@ -15281,11 +15128,9 @@ PDFPrintService.prototype = {
this.scratchCanvas = null;
activeService = null;
ensureOverlay().then(function () {
- if (overlayManager.active !== "printServiceOverlay") {
- return;
+ if (overlayManager.active === dialog) {
+ overlayManager.close(dialog);
}
-
- overlayManager.close("printServiceOverlay");
});
},
@@ -15375,7 +15220,7 @@ window.print = function () {
ensureOverlay().then(function () {
if (activeService) {
- overlayManager.open("printServiceOverlay");
+ overlayManager.open(dialog);
}
});
@@ -15385,8 +15230,8 @@ window.print = function () {
if (!activeService) {
console.error("Expected print service to be initialized.");
ensureOverlay().then(function () {
- if (overlayManager.active === "printServiceOverlay") {
- overlayManager.close("printServiceOverlay");
+ if (overlayManager.active === dialog) {
+ overlayManager.close(dialog);
}
});
return;
@@ -15417,10 +15262,10 @@ function abort() {
}
function renderProgress(index, total, l10n) {
- const progressContainer = document.getElementById("printServiceOverlay");
+ dialog ||= document.getElementById("printServiceDialog");
const progress = Math.round(100 * index / total);
- const progressBar = progressContainer.querySelector("progress");
- const progressPerc = progressContainer.querySelector(".relative-progress");
+ const progressBar = dialog.querySelector("progress");
+ const progressPerc = dialog.querySelector(".relative-progress");
progressBar.value = progress;
l10n.get("print_progress_percent", {
progress
@@ -15463,8 +15308,10 @@ function ensureOverlay() {
throw new Error("The overlay manager has not yet been initialized.");
}
- overlayPromise = overlayManager.register("printServiceOverlay", document.getElementById("printServiceOverlay"), abort, true);
+ dialog ||= document.getElementById("printServiceDialog");
+ overlayPromise = overlayManager.register(dialog, true);
document.getElementById("printCancel").onclick = abort;
+ dialog.addEventListener("close", abort);
}
return overlayPromise;
@@ -15578,8 +15425,8 @@ var _app_options = __webpack_require__(1);
var _app = __webpack_require__(2);
-const pdfjsVersion = '2.13.216';
-const pdfjsBuild = '399a0ec60';
+const pdfjsVersion = '2.14.305';
+const pdfjsBuild = 'eaaa8b4ad';
window.PDFViewerApplication = _app.PDFViewerApplication;
window.PDFViewerApplicationOptions = _app_options.AppOptions;
;
@@ -15626,7 +15473,6 @@ function getViewerConfiguration() {
secondaryToolbar: {
toolbar: document.getElementById("secondaryToolbar"),
toggleButton: document.getElementById("secondaryToolbarToggle"),
- toolbarButtonContainer: document.getElementById("secondaryToolbarButtonContainer"),
presentationModeButton: document.getElementById("secondaryPresentationMode"),
openFileButton: document.getElementById("secondaryOpenFile"),
printButton: document.getElementById("secondaryPrint"),
@@ -15649,7 +15495,7 @@ function getViewerConfiguration() {
},
sidebar: {
outerContainer: document.getElementById("outerContainer"),
- viewerContainer: document.getElementById("viewerContainer"),
+ sidebarContainer: document.getElementById("sidebarContainer"),
toggleButton: document.getElementById("sidebarToggle"),
thumbnailButton: document.getElementById("viewThumbnail"),
outlineButton: document.getElementById("viewOutline"),
@@ -15680,16 +15526,14 @@ function getViewerConfiguration() {
findNextButton: document.getElementById("findNext")
},
passwordOverlay: {
- overlayName: "passwordOverlay",
- container: document.getElementById("passwordOverlay"),
+ dialog: document.getElementById("passwordDialog"),
label: document.getElementById("passwordText"),
input: document.getElementById("password"),
submitButton: document.getElementById("passwordSubmit"),
cancelButton: document.getElementById("passwordCancel")
},
documentProperties: {
- overlayName: "documentPropertiesOverlay",
- container: document.getElementById("documentPropertiesOverlay"),
+ dialog: document.getElementById("documentPropertiesDialog"),
closeButton: document.getElementById("documentPropertiesClose"),
fields: {
fileName: document.getElementById("fileNameField"),
@@ -15710,7 +15554,7 @@ function getViewerConfiguration() {
},
errorWrapper,
printContainer: document.getElementById("printContainer"),
- openFileInputName: "fileInput",
+ openFileInput: document.getElementById("fileInput"),
debuggerScriptPath: "./debugger.js"
};
}
@@ -15732,9 +15576,7 @@ function webViewerLoad() {
_app.PDFViewerApplication.run(config);
}
-if (document.blockUnblockOnload) {
- document.blockUnblockOnload(true);
-}
+document.blockUnblockOnload?.(true);
if (document.readyState === "interactive" || document.readyState === "complete") {
webViewerLoad();
diff --git a/js/pdfjs/web/viewer.js.map b/js/pdfjs/web/viewer.js.map
index 04b0581..36ae1c6 100644
--- a/js/pdfjs/web/viewer.js.map
+++ b/js/pdfjs/web/viewer.js.map
@@ -1 +1 @@
-{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof navigator === \"undefined\"\n ) {\n globalThis.navigator = Object.create(null);\n }\n const userAgent = navigator.userAgent || \"\";\n const platform = navigator.platform || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * NOTE: These options are used to generate the `default_preferences.json` file,\n * see `OptionKind.PREFERENCE`, hence the values below must use only\n * primitive types and cannot rely on any imported types.\n */\nconst defaultOptions = {\n annotationMode: {\n /** @type {number} */\n value: 2,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: compatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\") ? 2 : 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: navigator.language || \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n\n /**\n * @ignore\n */\n static _hasUserOptions() {\n return Object.keys(userOptions).length > 0;\n }\n}\n\nexport { AppOptions, compatibilityParams, OptionKind };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static async fallback(data) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n _fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _docStats: null,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an <iframe> or an <object>.\n AppOptions.set(\"externalLinkTarget\", LinkTarget.TOP);\n }\n await this._initializeViewerComponents();\n\n // Bind the various event handlers *after* the viewer has been\n // initialized, to prevent errors if an event arrives too soon.\n this.bindEvents();\n this.bindWindowEvents();\n\n // We can start UI localization now.\n const appContainer = appConfig.appContainer || document.documentElement;\n this.l10n.translate(appContainer).then(() => {\n // Dispatch the 'localized' event on the `eventBus` once the viewer\n // has been fully initialized and translated.\n this.eventBus.dispatch(\"localized\", { source: this });\n });\n\n this._initializedCapability.resolve();\n },\n\n /**\n * @private\n */\n async _readPreferences() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (AppOptions.get(\"disablePreferences\")) {\n // Give custom implementations of the default viewer a simpler way to\n // opt-out of having the `Preferences` override existing `AppOptions`.\n return;\n }\n if (AppOptions._hasUserOptions()) {\n console.warn(\n \"_readPreferences: The Preferences may override manually set AppOptions; \" +\n 'please use the \"disablePreferences\"-option in order to prevent that.'\n );\n }\n }\n try {\n AppOptions.setAll(await this.preferences.getAll());\n } catch (reason) {\n console.error(`_readPreferences: \"${reason?.message}\".`);\n }\n },\n\n /**\n * Potentially parse special debugging flags in the hash section of the URL.\n * @private\n */\n async _parseHashParameters() {\n if (!AppOptions.get(\"pdfBugEnabled\")) {\n return;\n }\n const hash = document.location.hash.substring(1);\n if (!hash) {\n return;\n }\n const params = parseQueryString(hash),\n waitOn = [];\n\n if (params.get(\"disableworker\") === \"true\") {\n waitOn.push(loadFakeWorker());\n }\n if (params.has(\"disablerange\")) {\n AppOptions.set(\"disableRange\", params.get(\"disablerange\") === \"true\");\n }\n if (params.has(\"disablestream\")) {\n AppOptions.set(\"disableStream\", params.get(\"disablestream\") === \"true\");\n }\n if (params.has(\"disableautofetch\")) {\n AppOptions.set(\n \"disableAutoFetch\",\n params.get(\"disableautofetch\") === \"true\"\n );\n }\n if (params.has(\"disablefontface\")) {\n AppOptions.set(\n \"disableFontFace\",\n params.get(\"disablefontface\") === \"true\"\n );\n }\n if (params.has(\"disablehistory\")) {\n AppOptions.set(\"disableHistory\", params.get(\"disablehistory\") === \"true\");\n }\n if (params.has(\"verbosity\")) {\n AppOptions.set(\"verbosity\", params.get(\"verbosity\") | 0);\n }\n if (params.has(\"textlayer\")) {\n switch (params.get(\"textlayer\")) {\n case \"off\":\n AppOptions.set(\"textLayerMode\", TextLayerMode.DISABLE);\n break;\n case \"visible\":\n case \"shadow\":\n case \"hover\":\n const viewer = this.appConfig.viewerContainer;\n viewer.classList.add(`textLayer-${params.get(\"textlayer\")}`);\n break;\n }\n }\n if (params.has(\"pdfbug\")) {\n AppOptions.set(\"pdfBug\", true);\n AppOptions.set(\"fontExtraProperties\", true);\n\n const enabled = params.get(\"pdfbug\").split(\",\");\n waitOn.push(initPDFBug(enabled));\n }\n // It is not possible to change locale for the (various) extension builds.\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")) &&\n params.has(\"locale\")\n ) {\n AppOptions.set(\"locale\", params.get(\"locale\"));\n }\n\n if (waitOn.length === 0) {\n return;\n }\n try {\n await Promise.all(waitOn);\n } catch (reason) {\n console.error(`_parseHashParameters: \"${reason.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeL10n() {\n this.l10n = this.externalServices.createL10n(\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ? { locale: AppOptions.get(\"locale\") }\n : null\n );\n const dir = await this.l10n.getDirection();\n document.getElementsByTagName(\"html\")[0].dir = dir;\n },\n\n /**\n * @private\n */\n _forceCssTheme() {\n const cssTheme = AppOptions.get(\"viewerCssTheme\");\n if (\n cssTheme === ViewerCssTheme.AUTOMATIC ||\n !Object.values(ViewerCssTheme).includes(cssTheme)\n ) {\n return;\n }\n try {\n const styleSheet = document.styleSheets[0];\n const cssRules = styleSheet?.cssRules || [];\n for (let i = 0, ii = cssRules.length; i < ii; i++) {\n const rule = cssRules[i];\n if (\n rule instanceof CSSMediaRule &&\n rule.media?.[0] === \"(prefers-color-scheme: dark)\"\n ) {\n if (cssTheme === ViewerCssTheme.LIGHT) {\n styleSheet.deleteRule(i);\n return;\n }\n // cssTheme === ViewerCssTheme.DARK\n const darkRules =\n /^@media \\(prefers-color-scheme: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$/.exec(\n rule.cssText\n );\n if (darkRules?.[1]) {\n styleSheet.deleteRule(i);\n styleSheet.insertRule(darkRules[1], i);\n }\n return;\n }\n }\n } catch (reason) {\n console.error(`_forceCssTheme: \"${reason?.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeViewerComponents() {\n const { appConfig, externalServices } = this;\n\n const eventBus = externalServices.isInAutomation\n ? new AutomationEventBus()\n : new EventBus();\n this.eventBus = eventBus;\n\n this.overlayManager = new OverlayManager();\n\n const pdfRenderingQueue = new PDFRenderingQueue();\n pdfRenderingQueue.onIdle = this._cleanup.bind(this);\n this.pdfRenderingQueue = pdfRenderingQueue;\n\n const pdfLinkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: AppOptions.get(\"externalLinkTarget\"),\n externalLinkRel: AppOptions.get(\"externalLinkRel\"),\n ignoreDestinationZoom: AppOptions.get(\"ignoreDestinationZoom\"),\n });\n this.pdfLinkService = pdfLinkService;\n\n const downloadManager = externalServices.createDownloadManager();\n this.downloadManager = downloadManager;\n\n const findController = new PDFFindController({\n linkService: pdfLinkService,\n eventBus,\n });\n this.findController = findController;\n\n const pdfScriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC || CHROME\")\n ? AppOptions.get(\"sandboxBundleSrc\")\n : null,\n scriptingFactory: externalServices,\n docPropertiesLookup: this._scriptingDocProperties.bind(this),\n });\n this.pdfScriptingManager = pdfScriptingManager;\n\n const container = appConfig.mainContainer;\n const viewer = appConfig.viewerContainer;\n this.pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n downloadManager,\n findController,\n scriptingManager:\n AppOptions.get(\"enableScripting\") && pdfScriptingManager,\n renderer: AppOptions.get(\"renderer\"),\n l10n: this.l10n,\n textLayerMode: AppOptions.get(\"textLayerMode\"),\n annotationMode: AppOptions.get(\"annotationMode\"),\n imageResourcesPath: AppOptions.get(\"imageResourcesPath\"),\n enablePrintAutoRotate: AppOptions.get(\"enablePrintAutoRotate\"),\n useOnlyCssZoom: AppOptions.get(\"useOnlyCssZoom\"),\n maxCanvasPixels: AppOptions.get(\"maxCanvasPixels\"),\n enablePermissions: AppOptions.get(\"enablePermissions\"),\n });\n pdfRenderingQueue.setViewer(this.pdfViewer);\n pdfLinkService.setViewer(this.pdfViewer);\n pdfScriptingManager.setViewer(this.pdfViewer);\n\n this.pdfThumbnailViewer = new PDFThumbnailViewer({\n container: appConfig.sidebar.thumbnailView,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n l10n: this.l10n,\n });\n pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n\n // The browsing history is only enabled when the viewer is standalone,\n // i.e. not when it is embedded in a web page.\n if (!this.isViewerEmbedded && !AppOptions.get(\"disableHistory\")) {\n this.pdfHistory = new PDFHistory({\n linkService: pdfLinkService,\n eventBus,\n });\n pdfLinkService.setHistory(this.pdfHistory);\n }\n\n if (!this.supportsIntegratedFind) {\n this.findBar = new PDFFindBar(appConfig.findBar, eventBus, this.l10n);\n }\n\n this.pdfDocumentProperties = new PDFDocumentProperties(\n appConfig.documentProperties,\n this.overlayManager,\n eventBus,\n this.l10n\n );\n\n this.pdfCursorTools = new PDFCursorTools({\n container,\n eventBus,\n cursorToolOnLoad: AppOptions.get(\"cursorToolOnLoad\"),\n });\n\n this.toolbar = new Toolbar(appConfig.toolbar, eventBus, this.l10n);\n\n this.secondaryToolbar = new SecondaryToolbar(\n appConfig.secondaryToolbar,\n container,\n eventBus\n );\n\n if (this.supportsFullscreen) {\n this.pdfPresentationMode = new PDFPresentationMode({\n container,\n pdfViewer: this.pdfViewer,\n eventBus,\n });\n }\n\n this.passwordPrompt = new PasswordPrompt(\n appConfig.passwordOverlay,\n this.overlayManager,\n this.l10n,\n this.isViewerEmbedded\n );\n\n this.pdfOutlineViewer = new PDFOutlineViewer({\n container: appConfig.sidebar.outlineView,\n eventBus,\n linkService: pdfLinkService,\n });\n\n this.pdfAttachmentViewer = new PDFAttachmentViewer({\n container: appConfig.sidebar.attachmentsView,\n eventBus,\n downloadManager,\n });\n\n this.pdfLayerViewer = new PDFLayerViewer({\n container: appConfig.sidebar.layersView,\n eventBus,\n l10n: this.l10n,\n });\n\n this.pdfSidebar = new PDFSidebar({\n elements: appConfig.sidebar,\n pdfViewer: this.pdfViewer,\n pdfThumbnailViewer: this.pdfThumbnailViewer,\n eventBus,\n l10n: this.l10n,\n });\n this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n\n this.pdfSidebarResizer = new PDFSidebarResizer(\n appConfig.sidebarResizer,\n eventBus,\n this.l10n\n );\n },\n\n run(config) {\n this.initialize(config).then(webViewerInitialized);\n },\n\n get initialized() {\n return this._initializedCapability.settled;\n },\n\n get initializedPromise() {\n return this._initializedCapability.promise;\n },\n\n zoomIn(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.increaseScale(steps);\n },\n\n zoomOut(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.decreaseScale(steps);\n },\n\n zoomReset() {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n },\n\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n },\n\n get page() {\n return this.pdfViewer.currentPageNumber;\n },\n\n set page(val) {\n this.pdfViewer.currentPageNumber = val;\n },\n\n get supportsPrinting() {\n return PDFPrintServiceFactory.instance.supportsPrinting;\n },\n\n get supportsFullscreen() {\n return shadow(this, \"supportsFullscreen\", document.fullscreenEnabled);\n },\n\n get supportsIntegratedFind() {\n return this.externalServices.supportsIntegratedFind;\n },\n\n get supportsDocumentFonts() {\n return this.externalServices.supportsDocumentFonts;\n },\n\n get loadingBar() {\n const bar = new ProgressBar(\"#loadingBar\");\n return shadow(this, \"loadingBar\", bar);\n },\n\n get supportedMouseWheelZoomModifierKeys() {\n return this.externalServices.supportedMouseWheelZoomModifierKeys;\n },\n\n initPassiveLoading() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n !PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n throw new Error(\"Not implemented: initPassiveLoading\");\n }\n this.externalServices.initPassiveLoading({\n onOpenWithTransport: (url, length, transport) => {\n this.open(url, { length, range: transport });\n },\n onOpenWithData: (data, contentDispositionFilename) => {\n if (isPdfFile(contentDispositionFilename)) {\n this._contentDispositionFilename = contentDispositionFilename;\n }\n this.open(data);\n },\n onOpenWithURL: (url, length, originalUrl) => {\n const file = originalUrl !== undefined ? { url, originalUrl } : url;\n const args = length !== undefined ? { length } : null;\n\n this.open(file, args);\n },\n onError: err => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, err);\n });\n },\n onProgress: (loaded, total) => {\n this.progress(loaded / total);\n },\n });\n },\n\n setTitleUsingUrl(url = \"\", downloadUrl = null) {\n this.url = url;\n this.baseUrl = url.split(\"#\")[0];\n if (downloadUrl) {\n this._downloadUrl =\n downloadUrl === url ? this.baseUrl : downloadUrl.split(\"#\")[0];\n }\n let title = getPdfFilenameFromUrl(url, \"\");\n if (!title) {\n try {\n title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n } catch (ex) {\n // decodeURIComponent may throw URIError,\n // fall back to using the unprocessed url in that case\n title = url;\n }\n }\n this.setTitle(title);\n },\n\n setTitle(title) {\n if (this.isViewerEmbedded) {\n // Embedded PDF viewers should not be changing their parent page's title.\n return;\n }\n document.title = title;\n },\n\n get _docFilename() {\n // Use `this.url` instead of `this.baseUrl` to perform filename detection\n // based on the reference fragment as ultimate fallback if needed.\n return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\n },\n\n /**\n * @private\n */\n _hideViewBookmark() {\n // URL does not reflect proper document location - hiding some buttons.\n const { toolbar, secondaryToolbar } = this.appConfig;\n toolbar.viewBookmark.hidden = true;\n secondaryToolbar.viewBookmarkButton.hidden = true;\n },\n\n /**\n * @private\n */\n _cancelIdleCallbacks() {\n if (!this._idleCallbacks.size) {\n return;\n }\n for (const callback of this._idleCallbacks) {\n window.cancelIdleCallback(callback);\n }\n this._idleCallbacks.clear();\n },\n\n /**\n * Closes opened PDF document.\n * @returns {Promise} - Returns the promise, which is resolved when all\n * destruction is completed.\n */\n async close() {\n this._unblockDocumentLoadEvent();\n this._hideViewBookmark();\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const { container } = this.appConfig.errorWrapper;\n container.hidden = true;\n }\n\n if (!this.pdfLoadingTask) {\n return;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this.pdfDocument?.annotationStorage.size > 0 &&\n this._annotationStorageModified\n ) {\n try {\n // Trigger saving, to prevent data loss in forms; see issue 12257.\n await this.save({ sourceEventType: \"save\" });\n } catch (reason) {\n // Ignoring errors, to ensure that document closing won't break.\n }\n }\n const promises = [];\n\n promises.push(this.pdfLoadingTask.destroy());\n this.pdfLoadingTask = null;\n\n if (this.pdfDocument) {\n this.pdfDocument = null;\n\n this.pdfThumbnailViewer.setDocument(null);\n this.pdfViewer.setDocument(null);\n this.pdfLinkService.setDocument(null);\n this.pdfDocumentProperties.setDocument(null);\n }\n this.pdfLinkService.externalLinkEnabled = true;\n this._fellback = false;\n this.store = null;\n this.isInitialViewSet = false;\n this.downloadComplete = false;\n this.url = \"\";\n this.baseUrl = \"\";\n this._downloadUrl = \"\";\n this.documentInfo = null;\n this.metadata = null;\n this._contentDispositionFilename = null;\n this._contentLength = null;\n this._saveInProgress = false;\n this._docStats = null;\n\n this._cancelIdleCallbacks();\n promises.push(this.pdfScriptingManager.destroyPromise);\n\n this.pdfSidebar.reset();\n this.pdfOutlineViewer.reset();\n this.pdfAttachmentViewer.reset();\n this.pdfLayerViewer.reset();\n\n this.pdfHistory?.reset();\n this.findBar?.reset();\n this.toolbar.reset();\n this.secondaryToolbar.reset();\n\n if (typeof PDFBug !== \"undefined\") {\n PDFBug.cleanup();\n }\n await Promise.all(promises);\n },\n\n /**\n * Opens PDF document specified by URL or array with additional arguments.\n * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.\n * @param {Object} [args] - Additional arguments for the getDocument call,\n * e.g. HTTP headers ('httpHeaders') or alternative\n * data transport ('range').\n * @returns {Promise} - Returns the promise, which is resolved when document\n * is opened.\n */\n async open(file, args) {\n if (this.pdfLoadingTask) {\n // We need to destroy already opened document.\n await this.close();\n }\n // Set the necessary global worker parameters, using the available options.\n const workerParameters = AppOptions.getAll(OptionKind.WORKER);\n for (const key in workerParameters) {\n GlobalWorkerOptions[key] = workerParameters[key];\n }\n\n const parameters = Object.create(null);\n if (typeof file === \"string\") {\n // URL\n this.setTitleUsingUrl(file, /* downloadUrl = */ file);\n parameters.url = file;\n } else if (file && \"byteLength\" in file) {\n // ArrayBuffer\n parameters.data = file;\n } else if (file.url && file.originalUrl) {\n this.setTitleUsingUrl(file.originalUrl, /* downloadUrl = */ file.url);\n parameters.url = file.url;\n }\n // Set the necessary API parameters, using the available options.\n const apiParameters = AppOptions.getAll(OptionKind.API);\n for (const key in apiParameters) {\n let value = apiParameters[key];\n\n if (key === \"docBaseUrl\" && !value) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n value = document.URL.split(\"#\")[0];\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n value = this.baseUrl;\n }\n }\n parameters[key] = value;\n }\n // Finally, update the API parameters with the arguments (if they exist).\n if (args) {\n for (const key in args) {\n parameters[key] = args[key];\n }\n }\n\n const loadingTask = getDocument(parameters);\n this.pdfLoadingTask = loadingTask;\n\n loadingTask.onPassword = (updateCallback, reason) => {\n this.pdfLinkService.externalLinkEnabled = false;\n this.passwordPrompt.setUpdateCallback(updateCallback, reason);\n this.passwordPrompt.open();\n };\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.progress(loaded / total);\n };\n\n // Listen for unsupported features to trigger the fallback UI.\n loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n\n return loadingTask.promise.then(\n pdfDocument => {\n this.load(pdfDocument);\n },\n reason => {\n if (loadingTask !== this.pdfLoadingTask) {\n return undefined; // Ignore errors for previously opened PDF files.\n }\n\n let key = \"loading_error\";\n if (reason instanceof InvalidPDFException) {\n key = \"invalid_file_error\";\n } else if (reason instanceof MissingPDFException) {\n key = \"missing_file_error\";\n } else if (reason instanceof UnexpectedResponseException) {\n key = \"unexpected_response_error\";\n }\n return this.l10n.get(key).then(msg => {\n this._documentError(msg, { message: reason?.message });\n throw reason;\n });\n }\n );\n },\n\n /**\n * @private\n */\n _ensureDownloadComplete() {\n if (this.pdfDocument && this.downloadComplete) {\n return;\n }\n throw new Error(\"PDF document not downloaded.\");\n },\n\n async download({ sourceEventType = \"download\" } = {}) {\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.getData();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply download using the URL.\n await this.downloadManager.downloadUrl(url, filename);\n }\n },\n\n async save({ sourceEventType = \"download\" } = {}) {\n if (this._saveInProgress) {\n return;\n }\n this._saveInProgress = true;\n await this.pdfScriptingManager.dispatchWillSave();\n\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.saveDocument();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply fallback to a \"regular\" download.\n console.error(`Error when saving the document: ${reason.message}`);\n await this.download({ sourceEventType });\n } finally {\n await this.pdfScriptingManager.dispatchDidSave();\n this._saveInProgress = false;\n }\n },\n\n downloadOrSave(options) {\n if (this.pdfDocument?.annotationStorage.size > 0) {\n this.save(options);\n } else {\n this.download(options);\n }\n },\n\n fallback(featureId) {\n this.externalServices.reportTelemetry({\n type: \"unsupportedFeature\",\n featureId,\n });\n\n // Only trigger the fallback once so we don't spam the user with messages\n // for one PDF.\n if (this._fellback) {\n return;\n }\n this._fellback = true;\n\n this.externalServices\n .fallback({\n featureId,\n url: this.baseUrl,\n })\n .then(download => {\n if (!download) {\n return;\n }\n this.download({ sourceEventType: \"download\" });\n });\n },\n\n /**\n * Show the error box; used for errors affecting loading and/or parsing of\n * the entire PDF document.\n */\n _documentError(message, moreInfo = null) {\n this._unblockDocumentLoadEvent();\n\n this._otherError(message, moreInfo);\n\n this.eventBus.dispatch(\"documenterror\", {\n source: this,\n message,\n reason: moreInfo?.message ?? null,\n });\n },\n\n /**\n * Show the error box; used for errors affecting e.g. only a single page.\n *\n * @param {string} message - A message that is human readable.\n * @param {Object} [moreInfo] - Further information about the error that is\n * more technical. Should have a 'message' and\n * optionally a 'stack' property.\n */\n _otherError(message, moreInfo = null) {\n const moreInfoText = [\n this.l10n.get(\"error_version_info\", {\n version: version || \"?\",\n build: build || \"?\",\n }),\n ];\n if (moreInfo) {\n moreInfoText.push(\n this.l10n.get(\"error_message\", { message: moreInfo.message })\n );\n if (moreInfo.stack) {\n moreInfoText.push(\n this.l10n.get(\"error_stack\", { stack: moreInfo.stack })\n );\n } else {\n if (moreInfo.filename) {\n moreInfoText.push(\n this.l10n.get(\"error_file\", { file: moreInfo.filename })\n );\n }\n if (moreInfo.lineNumber) {\n moreInfoText.push(\n this.l10n.get(\"error_line\", { line: moreInfo.lineNumber })\n );\n }\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const errorWrapperConfig = this.appConfig.errorWrapper;\n const errorWrapper = errorWrapperConfig.container;\n errorWrapper.hidden = false;\n\n const errorMessage = errorWrapperConfig.errorMessage;\n errorMessage.textContent = message;\n\n const closeButton = errorWrapperConfig.closeButton;\n closeButton.onclick = function () {\n errorWrapper.hidden = true;\n };\n\n const errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n const moreInfoButton = errorWrapperConfig.moreInfoButton;\n const lessInfoButton = errorWrapperConfig.lessInfoButton;\n moreInfoButton.onclick = function () {\n errorMoreInfo.hidden = false;\n moreInfoButton.hidden = true;\n lessInfoButton.hidden = false;\n errorMoreInfo.style.height = errorMoreInfo.scrollHeight + \"px\";\n };\n lessInfoButton.onclick = function () {\n errorMoreInfo.hidden = true;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n };\n moreInfoButton.oncontextmenu = noContextMenuHandler;\n lessInfoButton.oncontextmenu = noContextMenuHandler;\n closeButton.oncontextmenu = noContextMenuHandler;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n Promise.all(moreInfoText).then(parts => {\n errorMoreInfo.value = parts.join(\"\\n\");\n });\n } else {\n Promise.all(moreInfoText).then(parts => {\n console.error(message + \"\\n\" + parts.join(\"\\n\"));\n });\n this.fallback();\n }\n },\n\n progress(level) {\n if (this.downloadComplete) {\n // Don't accidentally show the loading bar again when the entire file has\n // already been fetched (only an issue when disableAutoFetch is enabled).\n return;\n }\n const percent = Math.round(level * 100);\n // When we transition from full request to range requests, it's possible\n // that we discard some of the loaded data. This can cause the loading\n // bar to move backwards. So prevent this by only updating the bar if it\n // increases.\n if (percent > this.loadingBar.percent || isNaN(percent)) {\n this.loadingBar.percent = percent;\n\n // When disableAutoFetch is enabled, it's not uncommon for the entire file\n // to never be fetched (depends on e.g. the file structure). In this case\n // the loading bar will not be completely filled, nor will it be hidden.\n // To prevent displaying a partially filled loading bar permanently, we\n // hide it when no data has been loaded during a certain amount of time.\n const disableAutoFetch = this.pdfDocument\n ? this.pdfDocument.loadingParams.disableAutoFetch\n : AppOptions.get(\"disableAutoFetch\");\n\n if (disableAutoFetch && percent) {\n if (this.disableAutoFetchLoadingBarTimeout) {\n clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n this.disableAutoFetchLoadingBarTimeout = null;\n }\n this.loadingBar.show();\n\n this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {\n this.loadingBar.hide();\n this.disableAutoFetchLoadingBarTimeout = null;\n }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n }\n }\n },\n\n load(pdfDocument) {\n this.pdfDocument = pdfDocument;\n\n pdfDocument.getDownloadInfo().then(({ length }) => {\n this._contentLength = length; // Ensure that the correct length is used.\n this.downloadComplete = true;\n this.loadingBar.hide();\n\n firstPagePromise.then(() => {\n this.eventBus.dispatch(\"documentloaded\", { source: this });\n });\n });\n\n // Since the `setInitialView` call below depends on this being resolved,\n // fetch it early to avoid delaying initial rendering of the PDF document.\n const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const pageModePromise = pdfDocument.getPageMode().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const openActionPromise = pdfDocument.getOpenAction().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n\n this.toolbar.setPagesCount(pdfDocument.numPages, false);\n this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n\n let baseDocumentUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n baseDocumentUrl = null;\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n baseDocumentUrl = this.baseUrl;\n } else if (PDFJSDev.test(\"CHROME\")) {\n baseDocumentUrl = location.href.split(\"#\")[0];\n }\n this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n\n const pdfViewer = this.pdfViewer;\n pdfViewer.setDocument(pdfDocument);\n const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\n\n const pdfThumbnailViewer = this.pdfThumbnailViewer;\n pdfThumbnailViewer.setDocument(pdfDocument);\n\n const storedPromise = (this.store = new ViewHistory(\n pdfDocument.fingerprints[0]\n ))\n .getMultiple({\n page: null,\n zoom: DEFAULT_SCALE_VALUE,\n scrollLeft: \"0\",\n scrollTop: \"0\",\n rotation: null,\n sidebarView: SidebarView.UNKNOWN,\n scrollMode: ScrollMode.UNKNOWN,\n spreadMode: SpreadMode.UNKNOWN,\n })\n .catch(() => {\n /* Unable to read from storage; ignoring errors. */\n return Object.create(null);\n });\n\n firstPagePromise.then(pdfPage => {\n this.loadingBar.setWidth(this.appConfig.viewerContainer);\n this._initializeAnnotationStorageCallbacks(pdfDocument);\n\n Promise.all([\n animationStarted,\n storedPromise,\n pageLayoutPromise,\n pageModePromise,\n openActionPromise,\n ])\n .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\n const viewOnLoad = AppOptions.get(\"viewOnLoad\");\n\n this._initializePdfHistory({\n fingerprint: pdfDocument.fingerprints[0],\n viewOnLoad,\n initialDest: openAction?.dest,\n });\n const initialBookmark = this.initialBookmark;\n\n // Initialize the default values, from user preferences.\n const zoom = AppOptions.get(\"defaultZoomValue\");\n let hash = zoom ? `zoom=${zoom}` : null;\n\n let rotation = null;\n let sidebarView = AppOptions.get(\"sidebarViewOnLoad\");\n let scrollMode = AppOptions.get(\"scrollModeOnLoad\");\n let spreadMode = AppOptions.get(\"spreadModeOnLoad\");\n\n if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) {\n hash =\n `page=${stored.page}&zoom=${zoom || stored.zoom},` +\n `${stored.scrollLeft},${stored.scrollTop}`;\n\n rotation = parseInt(stored.rotation, 10);\n // Always let user preference take precedence over the view history.\n if (sidebarView === SidebarView.UNKNOWN) {\n sidebarView = stored.sidebarView | 0;\n }\n if (scrollMode === ScrollMode.UNKNOWN) {\n scrollMode = stored.scrollMode | 0;\n }\n if (spreadMode === SpreadMode.UNKNOWN) {\n spreadMode = stored.spreadMode | 0;\n }\n }\n // Always let the user preference/view history take precedence.\n if (pageMode && sidebarView === SidebarView.UNKNOWN) {\n sidebarView = apiPageModeToSidebarView(pageMode);\n }\n if (\n pageLayout &&\n scrollMode === ScrollMode.UNKNOWN &&\n spreadMode === SpreadMode.UNKNOWN\n ) {\n const modes = apiPageLayoutToViewerModes(pageLayout);\n // TODO: Try to improve page-switching when using the mouse-wheel\n // and/or arrow-keys before allowing the document to control this.\n // scrollMode = modes.scrollMode;\n spreadMode = modes.spreadMode;\n }\n\n this.setInitialView(hash, {\n rotation,\n sidebarView,\n scrollMode,\n spreadMode,\n });\n this.eventBus.dispatch(\"documentinit\", { source: this });\n // Make all navigation keys work on document load,\n // unless the viewer is embedded in a web page.\n if (!this.isViewerEmbedded) {\n pdfViewer.focus();\n }\n\n // For documents with different page sizes, once all pages are\n // resolved, ensure that the correct location becomes visible on load.\n // (To reduce the risk, in very large and/or slow loading documents,\n // that the location changes *after* the user has started interacting\n // with the viewer, wait for either `pagesPromise` or a timeout.)\n await Promise.race([\n pagesPromise,\n new Promise(resolve => {\n setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\n }),\n ]);\n if (!initialBookmark && !hash) {\n return;\n }\n if (pdfViewer.hasEqualPageSizes) {\n return;\n }\n this.initialBookmark = initialBookmark;\n\n // eslint-disable-next-line no-self-assign\n pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n // Re-apply the initial document location.\n this.setInitialView(hash);\n })\n .catch(() => {\n // Ensure that the document is always completely initialized,\n // even if there are any errors thrown above.\n this.setInitialView();\n })\n .then(function () {\n // At this point, rendering of the initial page(s) should always have\n // started (and may even have completed).\n // To prevent any future issues, e.g. the document being completely\n // blank on load, always trigger rendering here.\n pdfViewer.update();\n });\n });\n\n pagesPromise.then(\n () => {\n this._unblockDocumentLoadEvent();\n\n this._initializeAutoPrint(pdfDocument, openActionPromise);\n },\n reason => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, { message: reason?.message });\n });\n }\n );\n\n onePageRendered.then(data => {\n this.externalServices.reportTelemetry({\n type: \"pageInfo\",\n timestamp: data.timestamp,\n });\n\n pdfDocument.getOutline().then(outline => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the outline resolved.\n }\n this.pdfOutlineViewer.render({ outline, pdfDocument });\n });\n pdfDocument.getAttachments().then(attachments => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the attachments resolved.\n }\n this.pdfAttachmentViewer.render({ attachments });\n });\n // Ensure that the layers accurately reflects the current state in the\n // viewer itself, rather than the default state provided by the API.\n pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the layers resolved.\n }\n this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\n });\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n \"requestIdleCallback\" in window\n ) {\n const callback = window.requestIdleCallback(\n () => {\n this._collectTelemetry(pdfDocument);\n this._idleCallbacks.delete(callback);\n },\n { timeout: 1000 }\n );\n this._idleCallbacks.add(callback);\n }\n });\n\n this._initializePageLabels(pdfDocument);\n this._initializeMetadata(pdfDocument);\n },\n\n /**\n * @private\n */\n async _scriptingDocProperties(pdfDocument) {\n if (!this.documentInfo) {\n // It should be *extremely* rare for metadata to not have been resolved\n // when this code runs, but ensure that we handle that case here.\n await new Promise(resolve => {\n this.eventBus._on(\"metadataloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the metadata resolved.\n }\n }\n if (!this._contentLength) {\n // Always waiting for the entire PDF document to be loaded will, most\n // likely, delay sandbox-creation too much in the general case for all\n // PDF documents which are not provided as binary data to the API.\n // Hence we'll simply have to trust that the `contentLength` (as provided\n // by the server), when it exists, is accurate enough here.\n await new Promise(resolve => {\n this.eventBus._on(\"documentloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the downloadInfo resolved.\n }\n }\n\n return {\n ...this.documentInfo,\n baseURL: this.baseUrl,\n filesize: this._contentLength,\n filename: this._docFilename,\n metadata: this.metadata?.getRaw(),\n authors: this.metadata?.get(\"dc:creator\"),\n numPages: this.pagesCount,\n URL: this.url,\n };\n },\n\n /**\n * A place to fetch data for telemetry after one page is rendered and the\n * viewer is idle.\n * @private\n */\n async _collectTelemetry(pdfDocument) {\n const markInfo = await this.pdfDocument.getMarkInfo();\n if (pdfDocument !== this.pdfDocument) {\n return; // Document was closed while waiting for mark info.\n }\n const tagged = markInfo?.Marked || false;\n this.externalServices.reportTelemetry({\n type: \"tagged\",\n tagged,\n });\n },\n\n /**\n * @private\n */\n async _initializeAutoPrint(pdfDocument, openActionPromise) {\n const [openAction, javaScript] = await Promise.all([\n openActionPromise,\n !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null,\n ]);\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the auto print data resolved.\n }\n let triggerAutoPrint = false;\n\n if (openAction?.action === \"Print\") {\n triggerAutoPrint = true;\n }\n if (javaScript) {\n javaScript.some(js => {\n if (!js) {\n // Don't warn/fallback for empty JavaScript actions.\n return false;\n }\n console.warn(\"Warning: JavaScript support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.javaScript);\n return true;\n });\n\n if (!triggerAutoPrint) {\n // Hack to support auto printing.\n for (const js of javaScript) {\n if (js && AutoPrintRegExp.test(js)) {\n triggerAutoPrint = true;\n break;\n }\n }\n }\n }\n\n if (triggerAutoPrint) {\n this.triggerPrinting();\n }\n },\n\n /**\n * @private\n */\n async _initializeMetadata(pdfDocument) {\n const { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n this.documentInfo = info;\n this.metadata = metadata;\n this._contentDispositionFilename ??= contentDispositionFilename;\n this._contentLength ??= contentLength; // See `getDownloadInfo`-call above.\n\n // Provides some basic debug information\n console.log(\n `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\n `${(info.Producer || \"-\").trim()} / ${(info.Creator || \"-\").trim()}] ` +\n `(PDF.js: ${version || \"-\"})`\n );\n let pdfTitle = info?.Title;\n\n const metadataTitle = metadata?.get(\"dc:title\");\n if (metadataTitle) {\n // Ghostscript can produce invalid 'dc:title' Metadata entries:\n // - The title may be \"Untitled\" (fixes bug 1031612).\n // - The title may contain incorrectly encoded characters, which thus\n // looks broken, hence we ignore the Metadata entry when it\n // contains characters from the Specials Unicode block\n // (fixes bug 1605526).\n if (\n metadataTitle !== \"Untitled\" &&\n !/[\\uFFF0-\\uFFFF]/g.test(metadataTitle)\n ) {\n pdfTitle = metadataTitle;\n }\n }\n if (pdfTitle) {\n this.setTitle(\n `${pdfTitle} - ${contentDispositionFilename || document.title}`\n );\n } else if (contentDispositionFilename) {\n this.setTitle(contentDispositionFilename);\n }\n\n if (\n info.IsXFAPresent &&\n !info.IsAcroFormPresent &&\n !pdfDocument.isPureXfa\n ) {\n if (pdfDocument.loadingParams.enableXfa) {\n console.warn(\"Warning: XFA Foreground documents are not supported\");\n } else {\n console.warn(\"Warning: XFA support is not enabled\");\n }\n this.fallback(UNSUPPORTED_FEATURES.forms);\n } else if (\n (info.IsAcroFormPresent || info.IsXFAPresent) &&\n !this.pdfViewer.renderForms\n ) {\n console.warn(\"Warning: Interactive form support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.forms);\n }\n\n if (info.IsSignaturesPresent) {\n console.warn(\"Warning: Digital signatures validation is not supported\");\n this.fallback(UNSUPPORTED_FEATURES.signatures);\n }\n\n // Telemetry labels must be C++ variable friendly.\n let versionId = \"other\";\n if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {\n versionId = `v${info.PDFFormatVersion.replace(\".\", \"_\")}`;\n }\n let generatorId = \"other\";\n if (info.Producer) {\n const producer = info.Producer.toLowerCase();\n KNOWN_GENERATORS.some(function (generator) {\n if (!producer.includes(generator)) {\n return false;\n }\n generatorId = generator.replace(/[ .-]/g, \"_\");\n return true;\n });\n }\n let formType = null;\n if (info.IsXFAPresent) {\n formType = \"xfa\";\n } else if (info.IsAcroFormPresent) {\n formType = \"acroform\";\n }\n this.externalServices.reportTelemetry({\n type: \"documentInfo\",\n version: versionId,\n generator: generatorId,\n formType,\n });\n\n this.eventBus.dispatch(\"metadataloaded\", { source: this });\n },\n\n /**\n * @private\n */\n async _initializePageLabels(pdfDocument) {\n const labels = await pdfDocument.getPageLabels();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the page labels resolved.\n }\n if (!labels || AppOptions.get(\"disablePageLabels\")) {\n return;\n }\n const numLabels = labels.length;\n // Ignore page labels that correspond to standard page numbering,\n // or page labels that are all empty.\n let standardLabels = 0,\n emptyLabels = 0;\n for (let i = 0; i < numLabels; i++) {\n const label = labels[i];\n if (label === (i + 1).toString()) {\n standardLabels++;\n } else if (label === \"\") {\n emptyLabels++;\n } else {\n break;\n }\n }\n if (standardLabels >= numLabels || emptyLabels >= numLabels) {\n return;\n }\n const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\n\n pdfViewer.setPageLabels(labels);\n pdfThumbnailViewer.setPageLabels(labels);\n\n // Changing toolbar page display to use labels and we need to set\n // the label of the current page.\n toolbar.setPagesCount(numLabels, true);\n toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n },\n\n /**\n * @private\n */\n _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\n if (!this.pdfHistory) {\n return;\n }\n this.pdfHistory.initialize({\n fingerprint,\n resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\n updateUrl: AppOptions.get(\"historyUpdateUrl\"),\n });\n\n if (this.pdfHistory.initialBookmark) {\n this.initialBookmark = this.pdfHistory.initialBookmark;\n\n this.initialRotation = this.pdfHistory.initialRotation;\n }\n\n // Always let the browser history/document hash take precedence.\n if (\n initialDest &&\n !this.initialBookmark &&\n viewOnLoad === ViewOnLoad.UNKNOWN\n ) {\n this.initialBookmark = JSON.stringify(initialDest);\n // TODO: Re-factor the `PDFHistory` initialization to remove this hack\n // that's currently necessary to prevent weird initial history state.\n this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\n }\n },\n\n /**\n * @private\n */\n _initializeAnnotationStorageCallbacks(pdfDocument) {\n if (pdfDocument !== this.pdfDocument) {\n return;\n }\n const { annotationStorage } = pdfDocument;\n\n annotationStorage.onSetModified = () => {\n window.addEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this._annotationStorageModified = true;\n }\n };\n annotationStorage.onResetModified = () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n delete this._annotationStorageModified;\n }\n };\n },\n\n setInitialView(\n storedHash,\n { rotation, sidebarView, scrollMode, spreadMode } = {}\n ) {\n const setRotation = angle => {\n if (isValidRotation(angle)) {\n this.pdfViewer.pagesRotation = angle;\n }\n };\n const setViewerModes = (scroll, spread) => {\n if (isValidScrollMode(scroll)) {\n this.pdfViewer.scrollMode = scroll;\n }\n if (isValidSpreadMode(spread)) {\n this.pdfViewer.spreadMode = spread;\n }\n };\n this.isInitialViewSet = true;\n this.pdfSidebar.setInitialView(sidebarView);\n\n setViewerModes(scrollMode, spreadMode);\n\n if (this.initialBookmark) {\n setRotation(this.initialRotation);\n delete this.initialRotation;\n\n this.pdfLinkService.setHash(this.initialBookmark);\n this.initialBookmark = null;\n } else if (storedHash) {\n setRotation(rotation);\n\n this.pdfLinkService.setHash(storedHash);\n }\n\n // Ensure that the correct page number is displayed in the UI,\n // even if the active page didn't change during document load.\n this.toolbar.setPageNumber(\n this.pdfViewer.currentPageNumber,\n this.pdfViewer.currentPageLabel\n );\n this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n\n if (!this.pdfViewer.currentScaleValue) {\n // Scale was not initialized: invalid bookmark or scale was not specified.\n // Setting the default one.\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n },\n\n /**\n * @private\n */\n _cleanup() {\n if (!this.pdfDocument) {\n return; // run cleanup when document is loaded\n }\n this.pdfViewer.cleanup();\n this.pdfThumbnailViewer.cleanup();\n\n // We don't want to remove fonts used by active page SVGs.\n this.pdfDocument.cleanup(\n /* keepLoadedFonts = */ this.pdfViewer.renderer === RendererType.SVG\n );\n },\n\n forceRendering() {\n this.pdfRenderingQueue.printing = !!this.printService;\n this.pdfRenderingQueue.isThumbnailViewEnabled =\n this.pdfSidebar.isThumbnailViewVisible;\n this.pdfRenderingQueue.renderHighestPriority();\n },\n\n beforePrint() {\n // Given that the \"beforeprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchWillPrint();\n\n if (this.printService) {\n // There is no way to suppress beforePrint/afterPrint events,\n // but PDFPrintService may generate double events -- this will ignore\n // the second event that will be coming from native window.print().\n return;\n }\n\n if (!this.supportsPrinting) {\n this.l10n.get(\"printing_not_supported\").then(msg => {\n this._otherError(msg);\n });\n return;\n }\n\n // The beforePrint is a sync method and we need to know layout before\n // returning from this method. Ensure that we can get sizes of the pages.\n if (!this.pdfViewer.pageViewsReady) {\n this.l10n.get(\"printing_not_ready\").then(msg => {\n // eslint-disable-next-line no-alert\n window.alert(msg);\n });\n return;\n }\n\n const pagesOverview = this.pdfViewer.getPagesOverview();\n const printContainer = this.appConfig.printContainer;\n const printResolution = AppOptions.get(\"printResolution\");\n const optionalContentConfigPromise =\n this.pdfViewer.optionalContentConfigPromise;\n\n const printService = PDFPrintServiceFactory.instance.createPrintService(\n this.pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n this.l10n\n );\n this.printService = printService;\n this.forceRendering();\n\n printService.layout();\n\n this.externalServices.reportTelemetry({\n type: \"print\",\n });\n },\n\n afterPrint() {\n // Given that the \"afterprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchDidPrint();\n\n if (this.printService) {\n this.printService.destroy();\n this.printService = null;\n\n this.pdfDocument?.annotationStorage.resetModified();\n }\n this.forceRendering();\n },\n\n rotatePages(delta) {\n this.pdfViewer.pagesRotation += delta;\n // Note that the thumbnail viewer is updated, and rendering is triggered,\n // in the 'rotationchanging' event handler.\n },\n\n requestPresentationMode() {\n this.pdfPresentationMode?.request();\n },\n\n triggerPrinting() {\n if (!this.supportsPrinting) {\n return;\n }\n window.print();\n },\n\n bindEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.beforePrint = this.beforePrint.bind(this);\n _boundEvents.afterPrint = this.afterPrint.bind(this);\n\n eventBus._on(\"resize\", webViewerResize);\n eventBus._on(\"hashchange\", webViewerHashchange);\n eventBus._on(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._on(\"afterprint\", _boundEvents.afterPrint);\n eventBus._on(\"pagerendered\", webViewerPageRendered);\n eventBus._on(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._on(\"pagechanging\", webViewerPageChanging);\n eventBus._on(\"scalechanging\", webViewerScaleChanging);\n eventBus._on(\"rotationchanging\", webViewerRotationChanging);\n eventBus._on(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._on(\"pagemode\", webViewerPageMode);\n eventBus._on(\"namedaction\", webViewerNamedAction);\n eventBus._on(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._on(\"presentationmode\", webViewerPresentationMode);\n eventBus._on(\"print\", webViewerPrint);\n eventBus._on(\"download\", webViewerDownload);\n eventBus._on(\"save\", webViewerSave);\n eventBus._on(\"firstpage\", webViewerFirstPage);\n eventBus._on(\"lastpage\", webViewerLastPage);\n eventBus._on(\"nextpage\", webViewerNextPage);\n eventBus._on(\"previouspage\", webViewerPreviousPage);\n eventBus._on(\"zoomin\", webViewerZoomIn);\n eventBus._on(\"zoomout\", webViewerZoomOut);\n eventBus._on(\"zoomreset\", webViewerZoomReset);\n eventBus._on(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._on(\"scalechanged\", webViewerScaleChanged);\n eventBus._on(\"rotatecw\", webViewerRotateCw);\n eventBus._on(\"rotateccw\", webViewerRotateCcw);\n eventBus._on(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._on(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._on(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._on(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._on(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._on(\"documentproperties\", webViewerDocumentProperties);\n eventBus._on(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._on(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._on(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (AppOptions.get(\"pdfBug\")) {\n _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;\n\n eventBus._on(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._on(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._on(\"fileinputchange\", webViewerFileInputChange);\n eventBus._on(\"openfile\", webViewerOpenFile);\n }\n },\n\n bindWindowEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.windowResize = () => {\n eventBus.dispatch(\"resize\", { source: window });\n };\n _boundEvents.windowHashChange = () => {\n eventBus.dispatch(\"hashchange\", {\n source: window,\n hash: document.location.hash.substring(1),\n });\n };\n _boundEvents.windowBeforePrint = () => {\n eventBus.dispatch(\"beforeprint\", { source: window });\n };\n _boundEvents.windowAfterPrint = () => {\n eventBus.dispatch(\"afterprint\", { source: window });\n };\n _boundEvents.windowUpdateFromSandbox = event => {\n eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n };\n\n window.addEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.addEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.addEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.addEventListener(\"click\", webViewerClick);\n window.addEventListener(\"keydown\", webViewerKeyDown);\n window.addEventListener(\"resize\", _boundEvents.windowResize);\n window.addEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.addEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.addEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.addEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n },\n\n unbindEvents() {\n const { eventBus, _boundEvents } = this;\n\n eventBus._off(\"resize\", webViewerResize);\n eventBus._off(\"hashchange\", webViewerHashchange);\n eventBus._off(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._off(\"afterprint\", _boundEvents.afterPrint);\n eventBus._off(\"pagerendered\", webViewerPageRendered);\n eventBus._off(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._off(\"pagechanging\", webViewerPageChanging);\n eventBus._off(\"scalechanging\", webViewerScaleChanging);\n eventBus._off(\"rotationchanging\", webViewerRotationChanging);\n eventBus._off(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._off(\"pagemode\", webViewerPageMode);\n eventBus._off(\"namedaction\", webViewerNamedAction);\n eventBus._off(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._off(\"presentationmode\", webViewerPresentationMode);\n eventBus._off(\"print\", webViewerPrint);\n eventBus._off(\"download\", webViewerDownload);\n eventBus._off(\"save\", webViewerSave);\n eventBus._off(\"firstpage\", webViewerFirstPage);\n eventBus._off(\"lastpage\", webViewerLastPage);\n eventBus._off(\"nextpage\", webViewerNextPage);\n eventBus._off(\"previouspage\", webViewerPreviousPage);\n eventBus._off(\"zoomin\", webViewerZoomIn);\n eventBus._off(\"zoomout\", webViewerZoomOut);\n eventBus._off(\"zoomreset\", webViewerZoomReset);\n eventBus._off(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._off(\"scalechanged\", webViewerScaleChanged);\n eventBus._off(\"rotatecw\", webViewerRotateCw);\n eventBus._off(\"rotateccw\", webViewerRotateCcw);\n eventBus._off(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._off(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._off(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._off(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._off(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._off(\"documentproperties\", webViewerDocumentProperties);\n eventBus._off(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._off(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._off(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (_boundEvents.reportPageStatsPDFBug) {\n eventBus._off(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._off(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n\n _boundEvents.reportPageStatsPDFBug = null;\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._off(\"fileinputchange\", webViewerFileInputChange);\n eventBus._off(\"openfile\", webViewerOpenFile);\n }\n\n _boundEvents.beforePrint = null;\n _boundEvents.afterPrint = null;\n },\n\n unbindWindowEvents() {\n const { _boundEvents } = this;\n\n window.removeEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.removeEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.removeEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.removeEventListener(\"click\", webViewerClick);\n window.removeEventListener(\"keydown\", webViewerKeyDown);\n window.removeEventListener(\"resize\", _boundEvents.windowResize);\n window.removeEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.removeEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.removeEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.removeEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n\n _boundEvents.windowResize = null;\n _boundEvents.windowHashChange = null;\n _boundEvents.windowBeforePrint = null;\n _boundEvents.windowAfterPrint = null;\n _boundEvents.windowUpdateFromSandbox = null;\n },\n\n accumulateWheelTicks(ticks) {\n // If the scroll direction changed, reset the accumulated wheel ticks.\n if (\n (this._wheelUnusedTicks > 0 && ticks < 0) ||\n (this._wheelUnusedTicks < 0 && ticks > 0)\n ) {\n this._wheelUnusedTicks = 0;\n }\n this._wheelUnusedTicks += ticks;\n const wholeTicks =\n Math.sign(this._wheelUnusedTicks) *\n Math.floor(Math.abs(this._wheelUnusedTicks));\n this._wheelUnusedTicks -= wholeTicks;\n return wholeTicks;\n },\n\n /**\n * Should be called *after* all pages have loaded, or if an error occurred,\n * to unblock the \"load\" event; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\n * @private\n */\n _unblockDocumentLoadEvent() {\n if (document.blockUnblockOnload) {\n document.blockUnblockOnload(false);\n }\n // Ensure that this method is only ever run once.\n this._unblockDocumentLoadEvent = () => {};\n },\n\n /**\n * @ignore\n */\n _reportDocumentStatsTelemetry() {\n const { stats } = this.pdfDocument;\n if (stats !== this._docStats) {\n this._docStats = stats;\n\n this.externalServices.reportTelemetry({\n type: \"documentStats\",\n stats,\n });\n }\n },\n\n /**\n * Used together with the integration-tests, to enable awaiting full\n * initialization of the scripting/sandbox.\n */\n get scriptingReady() {\n return this.pdfScriptingManager.ready;\n },\n};\n\nlet validateFileURL;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const HOSTED_VIEWER_ORIGINS = [\n \"null\",\n \"http://mozilla.github.io\",\n \"https://mozilla.github.io\",\n ];\n validateFileURL = function (file) {\n if (file === undefined) {\n return;\n }\n try {\n const viewerOrigin = new URL(window.location.href).origin || \"null\";\n if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n // Hosted or local viewer, allow for any file locations\n return;\n }\n const fileOrigin = new URL(file, window.location.href).origin;\n // Removing of the following line will not guarantee that the viewer will\n // start accepting URLs from foreign origin -- CORS headers on the remote\n // server must be properly configured.\n if (fileOrigin !== viewerOrigin) {\n throw new Error(\"file origin does not match viewer's\");\n }\n } catch (ex) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, { message: ex?.message });\n });\n throw ex;\n }\n };\n}\n\nasync function loadFakeWorker() {\n if (!GlobalWorkerOptions.workerSrc) {\n GlobalWorkerOptions.workerSrc = AppOptions.get(\"workerSrc\");\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n window.pdfjsWorker = await import(\"pdfjs/core/worker.js\");\n return;\n }\n await loadScript(PDFWorker.workerSrc);\n}\n\nasync function initPDFBug(enabledTabs) {\n const { debuggerScriptPath, mainContainer } = PDFViewerApplication.appConfig;\n await loadScript(debuggerScriptPath);\n PDFBug.init({ OPS }, mainContainer, enabledTabs);\n}\n\nfunction reportPageStatsPDFBug({ pageNumber }) {\n if (typeof Stats === \"undefined\" || !Stats.enabled) {\n return;\n }\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const pageStats = pageView?.pdfPage?.stats;\n if (!pageStats) {\n return;\n }\n Stats.add(pageNumber, pageStats);\n}\n\nfunction webViewerInitialized() {\n const appConfig = PDFViewerApplication.appConfig;\n let file;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const queryString = document.location.search.substring(1);\n const params = parseQueryString(queryString);\n file = params.get(\"file\") ?? AppOptions.get(\"defaultUrl\");\n validateFileURL(file);\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n file = window.location.href;\n } else if (PDFJSDev.test(\"CHROME\")) {\n file = AppOptions.get(\"defaultUrl\");\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const fileInput = document.createElement(\"input\");\n fileInput.id = appConfig.openFileInputName;\n fileInput.className = \"fileInput\";\n fileInput.setAttribute(\"type\", \"file\");\n fileInput.oncontextmenu = noContextMenuHandler;\n document.body.appendChild(fileInput);\n\n if (\n !window.File ||\n !window.FileReader ||\n !window.FileList ||\n !window.Blob\n ) {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n } else {\n fileInput.value = null;\n }\n\n fileInput.addEventListener(\"change\", function (evt) {\n const files = evt.target.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.target,\n });\n });\n\n // Enable dragging-and-dropping a new PDF file onto the viewerContainer.\n appConfig.mainContainer.addEventListener(\"dragover\", function (evt) {\n evt.preventDefault();\n\n evt.dataTransfer.dropEffect = \"move\";\n });\n appConfig.mainContainer.addEventListener(\"drop\", function (evt) {\n evt.preventDefault();\n\n const files = evt.dataTransfer.files;\n if (!files || files.length === 0) {\n return;\n }\n PDFViewerApplication.eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.dataTransfer,\n });\n });\n } else {\n appConfig.toolbar.openFile.hidden = true;\n appConfig.secondaryToolbar.openFileButton.hidden = true;\n }\n\n if (!PDFViewerApplication.supportsDocumentFonts) {\n AppOptions.set(\"disableFontFace\", true);\n PDFViewerApplication.l10n.get(\"web_fonts_disabled\").then(msg => {\n console.warn(msg);\n });\n }\n\n if (!PDFViewerApplication.supportsPrinting) {\n appConfig.toolbar.print.classList.add(\"hidden\");\n appConfig.secondaryToolbar.printButton.classList.add(\"hidden\");\n }\n\n if (!PDFViewerApplication.supportsFullscreen) {\n appConfig.toolbar.presentationModeButton.classList.add(\"hidden\");\n appConfig.secondaryToolbar.presentationModeButton.classList.add(\"hidden\");\n }\n\n if (PDFViewerApplication.supportsIntegratedFind) {\n appConfig.toolbar.viewFind.classList.add(\"hidden\");\n }\n\n appConfig.mainContainer.addEventListener(\n \"transitionend\",\n function (evt) {\n if (evt.target === /* mainContainer */ this) {\n PDFViewerApplication.eventBus.dispatch(\"resize\", { source: this });\n }\n },\n true\n );\n\n try {\n webViewerOpenFileViaURL(file);\n } catch (reason) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, reason);\n });\n }\n}\n\nfunction webViewerOpenFileViaURL(file) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (file) {\n PDFViewerApplication.open(file);\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n PDFViewerApplication.setTitleUsingUrl(file, /* downloadUrl = */ file);\n PDFViewerApplication.initPassiveLoading();\n } else {\n if (file) {\n throw new Error(\"Not implemented: webViewerOpenFileViaURL\");\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n }\n}\n\nfunction webViewerPageRendered({ pageNumber, error }) {\n // If the page is still visible when it has finished rendering,\n // ensure that the page number input loading indicator is hidden.\n if (pageNumber === PDFViewerApplication.page) {\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n }\n\n // Use the rendered page to set the corresponding thumbnail image.\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(\n /* index = */ pageNumber - 1\n );\n if (pageView && thumbnailView) {\n thumbnailView.setImage(pageView);\n }\n }\n\n if (error) {\n PDFViewerApplication.l10n.get(\"rendering_error\").then(msg => {\n PDFViewerApplication._otherError(msg, error);\n });\n }\n\n // It is a good time to report stream and font types.\n PDFViewerApplication._reportDocumentStatsTelemetry();\n}\n\nfunction webViewerPageMode({ mode }) {\n // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\n let view;\n switch (mode) {\n case \"thumbs\":\n view = SidebarView.THUMBS;\n break;\n case \"bookmarks\":\n case \"outline\": // non-standard\n view = SidebarView.OUTLINE;\n break;\n case \"attachments\": // non-standard\n view = SidebarView.ATTACHMENTS;\n break;\n case \"layers\": // non-standard\n view = SidebarView.LAYERS;\n break;\n case \"none\":\n view = SidebarView.NONE;\n break;\n default:\n console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n return;\n }\n PDFViewerApplication.pdfSidebar.switchView(view, /* forceOpen = */ true);\n}\n\nfunction webViewerNamedAction(evt) {\n // Processing a couple of named actions that might be useful, see also\n // `PDFLinkService.executeNamedAction`.\n switch (evt.action) {\n case \"GoToPage\":\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n break;\n\n case \"Find\":\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.toggle();\n }\n break;\n\n case \"Print\":\n PDFViewerApplication.triggerPrinting();\n break;\n\n case \"SaveAs\":\n webViewerSave();\n break;\n }\n}\n\nfunction webViewerPresentationModeChanged(evt) {\n PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\n}\n\nfunction webViewerSidebarViewChanged(evt) {\n PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\n PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"sidebarView\", evt.view).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerUpdateViewarea(evt) {\n const location = evt.location;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store\n ?.setMultiple({\n page: location.pageNumber,\n zoom: location.scale,\n scrollLeft: location.left,\n scrollTop: location.top,\n rotation: location.rotation,\n })\n .catch(() => {\n // Unable to write to storage.\n });\n }\n const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(\n location.pdfOpenParams\n );\n PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\n href;\n\n // Show/hide the loading indicator in the page number input element.\n const currentPage = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ PDFViewerApplication.page - 1\n );\n const loading = currentPage?.renderingState !== RenderingStates.FINISHED;\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\n\nfunction webViewerScrollModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"scrollMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerSpreadModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"spreadMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerResize() {\n const { pdfDocument, pdfViewer } = PDFViewerApplication;\n if (!pdfDocument) {\n return;\n }\n const currentScaleValue = pdfViewer.currentScaleValue;\n if (\n currentScaleValue === \"auto\" ||\n currentScaleValue === \"page-fit\" ||\n currentScaleValue === \"page-width\"\n ) {\n // Note: the scale is constant for 'page-actual'.\n pdfViewer.currentScaleValue = currentScaleValue;\n }\n pdfViewer.update();\n}\n\nfunction webViewerHashchange(evt) {\n const hash = evt.hash;\n if (!hash) {\n return;\n }\n if (!PDFViewerApplication.isInitialViewSet) {\n PDFViewerApplication.initialBookmark = hash;\n } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\n PDFViewerApplication.pdfLinkService.setHash(hash);\n }\n}\n\nlet webViewerFileInputChange, webViewerOpenFile;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n webViewerFileInputChange = function (evt) {\n if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\n return; // Opening a new PDF file isn't supported in Presentation Mode.\n }\n const file = evt.fileInput.files[0];\n\n let url = URL.createObjectURL(file);\n if (file.name) {\n url = { url, originalUrl: file.name };\n }\n PDFViewerApplication.open(url);\n };\n\n webViewerOpenFile = function (evt) {\n const openFileInputName = PDFViewerApplication.appConfig.openFileInputName;\n document.getElementById(openFileInputName).click();\n };\n}\n\nfunction webViewerPresentationMode() {\n PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerPrint() {\n PDFViewerApplication.triggerPrinting();\n}\nfunction webViewerDownload() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"download\" });\n}\nfunction webViewerSave() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"save\" });\n}\nfunction webViewerFirstPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = 1;\n }\n}\nfunction webViewerLastPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n }\n}\nfunction webViewerNextPage() {\n PDFViewerApplication.pdfViewer.nextPage();\n}\nfunction webViewerPreviousPage() {\n PDFViewerApplication.pdfViewer.previousPage();\n}\nfunction webViewerZoomIn() {\n PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n PDFViewerApplication.zoomOut();\n}\nfunction webViewerZoomReset() {\n PDFViewerApplication.zoomReset();\n}\nfunction webViewerPageNumberChanged(evt) {\n const pdfViewer = PDFViewerApplication.pdfViewer;\n // Note that for `<input type=\"number\">` HTML elements, an empty string will\n // be returned for non-number inputs; hence we simply do nothing in that case.\n if (evt.value !== \"\") {\n PDFViewerApplication.pdfLinkService.goToPage(evt.value);\n }\n\n // Ensure that the page number input displays the correct value, even if the\n // value entered by the user was invalid (e.g. a floating point number).\n if (\n evt.value !== pdfViewer.currentPageNumber.toString() &&\n evt.value !== pdfViewer.currentPageLabel\n ) {\n PDFViewerApplication.toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n }\n}\nfunction webViewerScaleChanged(evt) {\n PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerOptionalContentConfig(evt) {\n PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\n}\nfunction webViewerSwitchScrollMode(evt) {\n PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n}\nfunction webViewerSwitchSpreadMode(evt) {\n PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n}\nfunction webViewerDocumentProperties() {\n PDFViewerApplication.pdfDocumentProperties.open();\n}\n\nfunction webViewerFindFromUrlHash(evt) {\n PDFViewerApplication.eventBus.dispatch(\"find\", {\n source: evt.source,\n type: \"\",\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: false,\n entireWord: false,\n highlightAll: true,\n findPrevious: false,\n matchDiacritics: true,\n });\n}\n\nfunction webViewerUpdateFindMatchesCount({ matchesCount }) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n } else {\n PDFViewerApplication.findBar.updateResultsCount(matchesCount);\n }\n}\n\nfunction webViewerUpdateFindControlState({\n state,\n previous,\n matchesCount,\n rawQuery,\n}) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindControlState({\n result: state,\n findPrevious: previous,\n matchesCount,\n rawQuery,\n });\n } else {\n PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);\n }\n}\n\nfunction webViewerScaleChanging(evt) {\n PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n\n PDFViewerApplication.pdfViewer.update();\n}\n\nfunction webViewerRotationChanging(evt) {\n PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n\n PDFViewerApplication.forceRendering();\n // Ensure that the active page doesn't change during rotation.\n PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n}\n\nfunction webViewerPageChanging({ pageNumber, pageLabel }) {\n PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);\n PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);\n\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);\n }\n}\n\nfunction webViewerVisibilityChange(evt) {\n if (document.visibilityState === \"visible\") {\n // Ignore mouse wheel zooming during tab switches (bug 1503412).\n setZoomDisabledTimeout();\n }\n}\n\nlet zoomDisabledTimeout = null;\nfunction setZoomDisabledTimeout() {\n if (zoomDisabledTimeout) {\n clearTimeout(zoomDisabledTimeout);\n }\n zoomDisabledTimeout = setTimeout(function () {\n zoomDisabledTimeout = null;\n }, WHEEL_ZOOM_DISABLED_TIMEOUT);\n}\n\nfunction webViewerWheel(evt) {\n const { pdfViewer, supportedMouseWheelZoomModifierKeys } =\n PDFViewerApplication;\n\n if (pdfViewer.isInPresentationMode) {\n return;\n }\n\n if (\n (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey) ||\n (evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey)\n ) {\n // Only zoom the pages, not the entire viewer.\n evt.preventDefault();\n // NOTE: this check must be placed *after* preventDefault.\n if (zoomDisabledTimeout || document.visibilityState === \"hidden\") {\n return;\n }\n\n // It is important that we query deltaMode before delta{X,Y}, so that\n // Firefox doesn't switch to DOM_DELTA_PIXEL mode for compat with other\n // browsers, see https://bugzilla.mozilla.org/show_bug.cgi?id=1392460.\n const deltaMode = evt.deltaMode;\n const delta = normalizeWheelEventDirection(evt);\n const previousScale = pdfViewer.currentScale;\n\n let ticks = 0;\n if (\n deltaMode === WheelEvent.DOM_DELTA_LINE ||\n deltaMode === WheelEvent.DOM_DELTA_PAGE\n ) {\n // For line-based devices, use one tick per event, because different\n // OSs have different defaults for the number lines. But we generally\n // want one \"clicky\" roll of the wheel (which produces one event) to\n // adjust the zoom by one step.\n if (Math.abs(delta) >= 1) {\n ticks = Math.sign(delta);\n } else {\n // If we're getting fractional lines (I can't think of a scenario\n // this might actually happen), be safe and use the accumulator.\n ticks = PDFViewerApplication.accumulateWheelTicks(delta);\n }\n } else {\n // pixel-based devices\n const PIXELS_PER_LINE_SCALE = 30;\n ticks = PDFViewerApplication.accumulateWheelTicks(\n delta / PIXELS_PER_LINE_SCALE\n );\n }\n\n if (ticks < 0) {\n PDFViewerApplication.zoomOut(-ticks);\n } else if (ticks > 0) {\n PDFViewerApplication.zoomIn(ticks);\n }\n\n const currentScale = pdfViewer.currentScale;\n if (previousScale !== currentScale) {\n // After scaling the page via zoomIn/zoomOut, the position of the upper-\n // left corner is restored. When the mouse wheel is used, the position\n // under the cursor should be restored instead.\n const scaleCorrectionFactor = currentScale / previousScale - 1;\n const rect = pdfViewer.container.getBoundingClientRect();\n const dx = evt.clientX - rect.left;\n const dy = evt.clientY - rect.top;\n pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n }\n } else {\n setZoomDisabledTimeout();\n }\n}\n\nfunction webViewerTouchStart(evt) {\n if (evt.touches.length > 1) {\n // Disable touch-based zooming, because the entire UI bits gets zoomed and\n // that doesn't look great. If we do want to have a good touch-based\n // zooming experience, we need to implement smooth zoom capability (probably\n // using a CSS transform for faster visual response, followed by async\n // re-rendering at the final zoom level) and do gesture detection on the\n // touchmove events to drive it. Or if we want to settle for a less good\n // experience we can make the touchmove events drive the existing step-zoom\n // behaviour that the ctrl+mousewheel path takes.\n evt.preventDefault();\n }\n}\n\nfunction webViewerClick(evt) {\n if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n return;\n }\n const appConfig = PDFViewerApplication.appConfig;\n if (\n PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\n (appConfig.toolbar.container.contains(evt.target) &&\n evt.target !== appConfig.secondaryToolbar.toggleButton)\n ) {\n PDFViewerApplication.secondaryToolbar.close();\n }\n}\n\nfunction webViewerKeyDown(evt) {\n if (PDFViewerApplication.overlayManager.active) {\n return;\n }\n const { eventBus, pdfViewer } = PDFViewerApplication;\n const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\n\n let handled = false,\n ensureViewerFocused = false;\n const cmd =\n (evt.ctrlKey ? 1 : 0) |\n (evt.altKey ? 2 : 0) |\n (evt.shiftKey ? 4 : 0) |\n (evt.metaKey ? 8 : 0);\n\n // First, handle the key bindings that are independent whether an input\n // control is selected or not.\n if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n // either CTRL or META key with optional SHIFT.\n switch (evt.keyCode) {\n case 70: // f\n if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\n PDFViewerApplication.findBar.open();\n handled = true;\n }\n break;\n case 71: // g\n if (!PDFViewerApplication.supportsIntegratedFind) {\n const { state } = PDFViewerApplication.findController;\n if (state) {\n const eventState = Object.assign(Object.create(null), state, {\n source: window,\n type: \"again\",\n findPrevious: cmd === 5 || cmd === 12,\n });\n eventBus.dispatch(\"find\", eventState);\n }\n handled = true;\n }\n break;\n case 61: // FF/Mac '='\n case 107: // FF '+' and '='\n case 187: // Chrome '+'\n case 171: // FF with German keyboard\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomIn();\n }\n handled = true;\n break;\n case 173: // FF/Mac '-'\n case 109: // FF '-'\n case 189: // Chrome '-'\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomOut();\n }\n handled = true;\n break;\n case 48: // '0'\n case 96: // '0' on Numpad of Swedish keyboard\n if (!isViewerInPresentationMode) {\n // keeping it unhandled (to restore page zoom to 100%)\n setTimeout(function () {\n // ... and resetting the scale after browser adjusts its scale\n PDFViewerApplication.zoomReset();\n });\n handled = false;\n }\n break;\n\n case 38: // up arrow\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 40: // down arrow\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC || CHROME\")) {\n // CTRL or META without shift\n if (cmd === 1 || cmd === 8) {\n switch (evt.keyCode) {\n case 83: // s\n eventBus.dispatch(\"download\", { source: window });\n handled = true;\n break;\n\n case 79: // o\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus.dispatch(\"openfile\", { source: window });\n handled = true;\n }\n break;\n }\n }\n }\n\n // CTRL+ALT or Option+Command\n if (cmd === 3 || cmd === 10) {\n switch (evt.keyCode) {\n case 80: // p\n PDFViewerApplication.requestPresentationMode();\n handled = true;\n break;\n case 71: // g\n // focuses input#pageNumber field\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n handled = true;\n break;\n }\n }\n\n if (handled) {\n if (ensureViewerFocused && !isViewerInPresentationMode) {\n pdfViewer.focus();\n }\n evt.preventDefault();\n return;\n }\n\n // Some shortcuts should not get handled if a control/input element\n // is selected.\n const curElement = getActiveOrFocusedElement();\n const curElementTagName = curElement?.tagName.toUpperCase();\n if (\n curElementTagName === \"INPUT\" ||\n curElementTagName === \"TEXTAREA\" ||\n curElementTagName === \"SELECT\" ||\n curElement?.isContentEditable\n ) {\n // Make sure that the secondary toolbar is closed when Escape is pressed.\n if (evt.keyCode !== /* Esc = */ 27) {\n return;\n }\n }\n\n // No control key pressed at all.\n if (cmd === 0) {\n let turnPage = 0,\n turnOnlyIfPageFit = false;\n switch (evt.keyCode) {\n case 38: // up arrow\n case 33: // pg up\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 8: // backspace\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 37: // left arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 75: // 'k'\n case 80: // 'p'\n turnPage = -1;\n break;\n case 27: // esc key\n if (PDFViewerApplication.secondaryToolbar.isOpen) {\n PDFViewerApplication.secondaryToolbar.close();\n handled = true;\n }\n if (\n !PDFViewerApplication.supportsIntegratedFind &&\n PDFViewerApplication.findBar.opened\n ) {\n PDFViewerApplication.findBar.close();\n handled = true;\n }\n break;\n case 40: // down arrow\n case 34: // pg down\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 13: // enter key\n case 32: // spacebar\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 39: // right arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 74: // 'j'\n case 78: // 'n'\n turnPage = 1;\n break;\n\n case 36: // home\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 35: // end\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n\n case 83: // 's'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.SELECT);\n break;\n case 72: // 'h'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.HAND);\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(90);\n break;\n\n case 115: // F4\n PDFViewerApplication.pdfSidebar.toggle();\n break;\n }\n\n if (\n turnPage !== 0 &&\n (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \"page-fit\")\n ) {\n if (turnPage > 0) {\n pdfViewer.nextPage();\n } else {\n pdfViewer.previousPage();\n }\n handled = true;\n }\n }\n\n // shift-key\n if (cmd === 4) {\n switch (evt.keyCode) {\n case 13: // enter key\n case 32: // spacebar\n if (\n !isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== \"page-fit\"\n ) {\n break;\n }\n pdfViewer.previousPage();\n\n handled = true;\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(-90);\n break;\n }\n }\n\n if (!handled && !isViewerInPresentationMode) {\n // 33=Page Up 34=Page Down 35=End 36=Home\n // 37=Left 38=Up 39=Right 40=Down\n // 32=Spacebar\n if (\n (evt.keyCode >= 33 && evt.keyCode <= 40) ||\n (evt.keyCode === 32 && curElementTagName !== \"BUTTON\")\n ) {\n ensureViewerFocused = true;\n }\n }\n\n if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n // The page container is not focused, but a page navigation key has been\n // pressed. Change the focus to the viewer container to make sure that\n // navigation by keyboard works as expected.\n pdfViewer.focus();\n }\n\n if (handled) {\n evt.preventDefault();\n }\n}\n\nfunction beforeUnload(evt) {\n evt.preventDefault();\n evt.returnValue = \"\";\n return false;\n}\n\n/* Abstract factory for the print service. */\nconst PDFPrintServiceFactory = {\n instance: {\n supportsPrinting: false,\n createPrintService() {\n throw new Error(\"Not implemented: createPrintService\");\n },\n },\n};\n\nexport {\n DefaultExternalServices,\n PDFPrintServiceFactory,\n PDFViewerApplication,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst MIN_SCALE = 0.1;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst LOADINGBAR_END_OFFSET_VAR = \"--loadingBar-end-offset\";\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst SidebarView = {\n UNKNOWN: -1,\n NONE: 0,\n THUMBS: 1, // Default value.\n OUTLINE: 2,\n ATTACHMENTS: 3,\n LAYERS: 4,\n};\n\nconst RendererType = {\n CANVAS: \"canvas\",\n SVG: \"svg\",\n};\n\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2,\n};\n\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n\nconst SpreadMode = {\n UNKNOWN: -1,\n NONE: 0, // Default value.\n ODD: 1,\n EVEN: 2,\n};\n\n// Used by `PDFViewerApplication`, and by the API unit-tests.\nconst AutoPrintRegExp = /\\bprint\\s*\\(/;\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n\n /**\n * @type {number} Horizontal scale.\n */\n this.sx = pixelRatio;\n\n /**\n * @type {number} Vertical scale.\n */\n this.sy = pixelRatio;\n }\n\n /**\n * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n */\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (\n (parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") ||\n getComputedStyle(parent).overflow === \"hidden\"))\n ) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n const debounceScroll = function (evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n const currentX = viewAreaElement.scrollLeft;\n const lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n const currentY = viewAreaElement.scrollTop;\n const lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n const state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\n * @param {string}\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n\nconst NullCharactersRegExp = /\\x00/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n * @param {boolean} [replaceInvisible]\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n console.error(`The argument must be a string.`);\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0,\n b = 1,\n c = 1,\n d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n const p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n const r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * @typedef {Object} GetPageSizeInchesParameters\n * @property {number[]} view\n * @property {number} userUnit\n * @property {number} rotate\n */\n\n/**\n * @typedef {Object} PageSize\n * @property {number} width - In inches.\n * @property {number} height - In inches.\n */\n\n/**\n * Gets the size of the specified page, converted from PDF units to inches.\n * @param {GetPageSizeInchesParameters} params\n * @returns {PageSize}\n */\nfunction getPageSizeInches({ view, userUnit, rotate }) {\n const [x1, y1, x2, y2] = view;\n // We need to take the page rotation into account as well.\n const changeOrientation = rotate % 180 !== 0;\n\n const width = ((x2 - x1) / 72) * userUnit;\n const height = ((y2 - y1) / 72) * userUnit;\n\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height,\n };\n}\n\n/**\n * Helper function for getVisibleElements.\n *\n * @param {number} index - initial guess at the first visible element\n * @param {Array} views - array of pages, into which `index` is an index\n * @param {number} top - the top of the scroll pane\n * @returns {number} less than or equal to `index` that is definitely at or\n * before the first visible element in `views`, but not by too much. (Usually,\n * this will be the first element in the first partially visible row in\n * `views`, although sometimes it goes back one row further.)\n */\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n // binarySearchFirstItem's assumption is that the input is ordered, with only\n // one index where the conditions flips from false to true: [false ...,\n // true...]. With vertical scrolling and spreads, it is possible to have\n // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n // similar sequence, with many more mixed true and false in the middle.\n //\n // So there is no guarantee that the binary search yields the index of the\n // first visible element. It could have been any of the other visible elements\n // that were preceded by a hidden element.\n\n // Of course, if either this element or the previous (hidden) element is also\n // the first element, there's nothing to worry about.\n if (index < 2) {\n return index;\n }\n\n // That aside, the possible cases are represented below.\n //\n // **** = fully hidden\n // A*B* = mix of partially visible and/or hidden pages\n // CDEF = fully visible\n //\n // (1) Binary search could have returned A, in which case we can stop.\n // (2) Binary search could also have returned B, in which case we need to\n // check the whole row.\n // (3) Binary search could also have returned C, in which case we need to\n // check the whole previous row.\n //\n // There's one other possibility:\n //\n // **** = fully hidden\n // ABCD = mix of fully and/or partially visible pages\n //\n // (4) Binary search could only have returned A.\n\n // Initially assume that we need to find the beginning of the current row\n // (case 1, 2, or 4), which means finding a page that is above the current\n // page's top. If the found page is partially visible, we're definitely not in\n // case 3, and this assumption is correct.\n let elt = views[index].div;\n let pageTop = elt.offsetTop + elt.clientTop;\n\n if (pageTop >= top) {\n // The found page is fully visible, so we're actually either in case 3 or 4,\n // and unfortunately we can't tell the difference between them without\n // scanning the entire previous row, so we just conservatively assume that\n // we do need to backtrack to that row. In both cases, the previous page is\n // in the previous row, so use its top instead.\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n\n // Now we backtrack to the first page that still has its bottom below\n // `pageTop`, which is the top of a page in the first visible row (unless\n // we're in case 4, in which case it's the row before that).\n // `index` is found by binary search, so the page at `index - 1` is\n // invisible and we can start looking for potentially visible pages from\n // `index - 2`. (However, if this loop terminates on its first iteration,\n // which is the case when pages are stacked vertically, `index` should remain\n // unchanged, so we use a distinct loop variable.)\n for (let i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n // We have reached the previous row, so stop now.\n // This loop is expected to terminate relatively quickly because the\n // number of pages per row is expected to be small.\n break;\n }\n index = i;\n }\n return index;\n}\n\n/**\n * @typedef {Object} GetVisibleElementsParameters\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n * @property {Array} views - Objects with a `div` property that contains an\n * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n * relevant layout assumptions.\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\n * sorted in descending order of the percent of their padding box that is\n * visible. The default value is `false`.\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\n * laid out horizontally instead of vertically. The default value is `false`.\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n * be in right-to-left mode. The default value is `false`.\n */\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n *\n * Well, pretty generic. There are some assumptions placed on the elements\n * referenced by `views`:\n * - If `horizontal`, no left of any earlier element is to the right of the\n * left of any later element.\n * - Otherwise, `views` can be split into contiguous rows where, within a row,\n * no top of any element is below the bottom of any other element, and\n * between rows, no bottom of any element in an earlier row is below the\n * top of any element in a later row.\n *\n * (Here, top, left, etc. all refer to the padding edge of the element in\n * question. For pages, that ends up being equivalent to the bounding box of the\n * rendering canvas. Earlier and later refer to index in `views`, not page\n * layout.)\n *\n * @param {GetVisibleElementsParameters}\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n */\nfunction getVisibleElements({\n scrollEl,\n views,\n sortByVisibility = false,\n horizontal = false,\n rtl = false,\n}) {\n const top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n const left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n\n // Throughout this \"generic\" function, comments will assume we're working with\n // PDF document pages, which is the most important and complex case. In this\n // case, the visible elements we're actually interested is the page canvas,\n // which is contained in a wrapper which adds no padding/border/margin, which\n // is itself contained in `view.div` which adds no padding (but does add a\n // border). So, as specified in this function's doc comment, this function\n // does all of its work on the padding edge of the provided views, starting at\n // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n // the border). Adding clientWidth/Height gets us the bottom-right corner of\n // the padding edge.\n function isElementBottomAfterViewTop(view) {\n const element = view.div;\n const elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementNextAfterViewHorizontally(view) {\n const element = view.div;\n const elementLeft = element.offsetLeft + element.clientLeft;\n const elementRight = elementLeft + element.clientWidth;\n return rtl ? elementLeft < right : elementRight > left;\n }\n\n const visible = [],\n ids = new Set(),\n numViews = views.length;\n let firstVisibleElementInd = binarySearchFirstItem(\n views,\n horizontal\n ? isElementNextAfterViewHorizontally\n : isElementBottomAfterViewTop\n );\n\n // Please note the return value of the `binarySearchFirstItem` function when\n // no valid element is found (hence the `firstVisibleElementInd` check below).\n if (\n firstVisibleElementInd > 0 &&\n firstVisibleElementInd < numViews &&\n !horizontal\n ) {\n // In wrapped scrolling (or vertical scrolling with spreads), with some page\n // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n // condition: there can be pages with bottoms above the view top between\n // pages with bottoms below. This function detects and corrects that error;\n // see it for more comments.\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n firstVisibleElementInd,\n views,\n top\n );\n }\n\n // lastEdge acts as a cutoff for us to stop looping, because we know all\n // subsequent pages will be hidden.\n //\n // When using wrapped scrolling or vertical scrolling with spreads, we can't\n // simply stop the first time we reach a page below the bottom of the view;\n // the tops of subsequent pages on the same row could still be visible. In\n // horizontal scrolling, we don't have that issue, so we can stop as soon as\n // we pass `right`, without needing the code below that handles the -1 case.\n let lastEdge = horizontal ? right : -1;\n\n for (let i = firstVisibleElementInd; i < numViews; i++) {\n const view = views[i],\n element = view.div;\n const currentWidth = element.offsetLeft + element.clientLeft;\n const currentHeight = element.offsetTop + element.clientTop;\n const viewWidth = element.clientWidth,\n viewHeight = element.clientHeight;\n const viewRight = currentWidth + viewWidth;\n const viewBottom = currentHeight + viewHeight;\n\n if (lastEdge === -1) {\n // As commented above, this is only needed in non-horizontal cases.\n // Setting lastEdge to the bottom of the first page that is partially\n // visible ensures that the next page fully below lastEdge is on the\n // next row, which has to be fully hidden along with all subsequent rows.\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n\n if (\n viewBottom <= top ||\n currentHeight >= bottom ||\n viewRight <= left ||\n currentWidth >= right\n ) {\n continue;\n }\n\n const hiddenHeight =\n Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n const hiddenWidth =\n Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n\n const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n const percent = (fractionHeight * fractionWidth * 100) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent,\n widthPercent: (fractionWidth * 100) | 0,\n });\n ids.add(view.id);\n }\n\n const first = visible[0],\n last = visible[visible.length - 1];\n\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n const pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, ids };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction normalizeWheelEventDirection(evt) {\n let delta = Math.hypot(evt.deltaX, evt.deltaY);\n const angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n return delta;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = normalizeWheelEventDirection(evt);\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\n\nfunction isValidScrollMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(ScrollMode).includes(mode) &&\n mode !== ScrollMode.UNKNOWN\n );\n}\n\nfunction isValidSpreadMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(SpreadMode).includes(mode) &&\n mode !== SpreadMode.UNKNOWN\n );\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nconst animationStarted = new Promise(function (resolve) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof window === \"undefined\"\n ) {\n // Prevent \"ReferenceError: window is not defined\" errors when running the\n // unit-tests in Node.js environments.\n setTimeout(resolve, 20);\n return;\n }\n window.requestAnimationFrame(resolve);\n});\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n constructor(id, { height, width, units } = {}) {\n this.visible = true;\n\n // Fetch the sub-elements for later.\n this.div = document.querySelector(id + \" .progress\");\n // Get the loading bar element, so it can be resized to fit the viewer.\n this.bar = this.div.parentNode;\n\n // Get options, with sensible defaults.\n this.height = height || 100;\n this.width = width || 100;\n this.units = units || \"%\";\n\n // Initialize heights.\n this.div.style.height = this.height + this.units;\n this.percent = 0;\n }\n\n _updateBar() {\n if (this._indeterminate) {\n this.div.classList.add(\"indeterminate\");\n this.div.style.width = this.width + this.units;\n return;\n }\n\n this.div.classList.remove(\"indeterminate\");\n const progressSize = (this.width * this._percent) / 100;\n this.div.style.width = progressSize + this.units;\n }\n\n get percent() {\n return this._percent;\n }\n\n set percent(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this._updateBar();\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n const container = viewer.parentNode;\n const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n const doc = document.documentElement;\n doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`);\n }\n }\n\n hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add(\"hidden\");\n }\n\n show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n this.bar.classList.remove(\"hidden\");\n }\n}\n\n/**\n * Get the active or focused element in current DOM.\n *\n * Recursively search for the truly active or focused element in case there are\n * shadow DOMs.\n *\n * @returns {Element} the truly active or focused element.\n */\nfunction getActiveOrFocusedElement() {\n let curRoot = document;\n let curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n\n while (curActiveOrFocused?.shadowRoot) {\n curRoot = curActiveOrFocused.shadowRoot;\n curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n }\n\n return curActiveOrFocused;\n}\n\n/**\n * Converts API PageLayout values to the format used by `BaseViewer`.\n * NOTE: This is supported to the extent that the viewer implements the\n * necessary Scroll/Spread modes (since SinglePage, TwoPageLeft,\n * and TwoPageRight all suggests using non-continuous scrolling).\n * @param {string} mode - The API PageLayout value.\n * @returns {Object}\n */\nfunction apiPageLayoutToViewerModes(layout) {\n let scrollMode = ScrollMode.VERTICAL,\n spreadMode = SpreadMode.NONE;\n\n switch (layout) {\n case \"SinglePage\":\n scrollMode = ScrollMode.PAGE;\n break;\n case \"OneColumn\":\n break;\n case \"TwoPageLeft\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnLeft\":\n spreadMode = SpreadMode.ODD;\n break;\n case \"TwoPageRight\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnRight\":\n spreadMode = SpreadMode.EVEN;\n break;\n }\n return { scrollMode, spreadMode };\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case \"UseNone\":\n return SidebarView.NONE;\n case \"UseThumbs\":\n return SidebarView.THUMBS;\n case \"UseOutlines\":\n return SidebarView.OUTLINE;\n case \"UseAttachments\":\n return SidebarView.ATTACHMENTS;\n case \"UseOC\":\n return SidebarView.LAYERS;\n }\n return SidebarView.NONE; // Default value.\n}\n\nexport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n approximateFraction,\n AutoPrintRegExp,\n backtrackBeforeAllVisibleElements, // only exported for testing\n binarySearchFirstItem,\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n getPageSizeInches,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDelta,\n normalizeWheelEventDirection,\n OutputScale,\n parseQueryString,\n PresentationModeState,\n ProgressBar,\n removeNullCharacters,\n RendererType,\n RenderingStates,\n roundToDivide,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WaitOnType = {\n EVENT: \"event\",\n TIMEOUT: \"timeout\",\n};\n\n/**\n * @typedef {Object} WaitOnEventOrTimeoutParameters\n * @property {Object} target - The event target, can for example be:\n * `window`, `document`, a DOM element, or an {EventBus} instance.\n * @property {string} name - The name of the event.\n * @property {number} delay - The delay, in milliseconds, after which the\n * timeout occurs (if the event wasn't already dispatched).\n */\n\n/**\n * Allows waiting for an event or a timeout, whichever occurs first.\n * Can be used to ensure that an action always occurs, even when an event\n * arrives late or not at all.\n *\n * @param {WaitOnEventOrTimeoutParameters}\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\n */\nfunction waitOnEventOrTimeout({ target, name, delay = 0 }) {\n return new Promise(function (resolve, reject) {\n if (\n typeof target !== \"object\" ||\n !(name && typeof name === \"string\") ||\n !(Number.isInteger(delay) && delay >= 0)\n ) {\n throw new Error(\"waitOnEventOrTimeout - invalid parameters.\");\n }\n\n function handler(type) {\n if (target instanceof EventBus) {\n target._off(name, eventHandler);\n } else {\n target.removeEventListener(name, eventHandler);\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n resolve(type);\n }\n\n const eventHandler = handler.bind(null, WaitOnType.EVENT);\n if (target instanceof EventBus) {\n target._on(name, eventHandler);\n } else {\n target.addEventListener(name, eventHandler);\n }\n\n const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n const timeout = setTimeout(timeoutHandler, delay);\n });\n}\n\n/**\n * Simple event bus for an application. Listeners are attached using the `on`\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\n */\nclass EventBus {\n constructor() {\n this._listeners = Object.create(null);\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n on(eventName, listener, options = null) {\n this._on(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n off(eventName, listener, options = null) {\n this._off(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {Object} data\n */\n dispatch(eventName, data) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n let externalListeners;\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n for (const { listener, external, once } of eventListeners.slice(0)) {\n if (once) {\n this._off(eventName, listener);\n }\n if (external) {\n (externalListeners ||= []).push(listener);\n continue;\n }\n listener(data);\n }\n // Dispatch any \"external\" listeners *after* the internal ones, to give the\n // viewer components time to handle events and update their state first.\n if (externalListeners) {\n for (const listener of externalListeners) {\n listener(data);\n }\n externalListeners = null;\n }\n }\n\n /**\n * @ignore\n */\n _on(eventName, listener, options = null) {\n const eventListeners = (this._listeners[eventName] ||= []);\n eventListeners.push({\n listener,\n external: options?.external === true,\n once: options?.once === true,\n });\n }\n\n /**\n * @ignore\n */\n _off(eventName, listener, options = null) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n return;\n }\n for (let i = 0, ii = eventListeners.length; i < ii; i++) {\n if (eventListeners[i].listener === listener) {\n eventListeners.splice(i, 1);\n return;\n }\n }\n }\n}\n\n/**\n * NOTE: Only used to support various PDF viewer tests in `mozilla-central`.\n */\nclass AutomationEventBus extends EventBus {\n dispatch(eventName, data) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: AutomationEventBus.dispatch\");\n }\n super.dispatch(eventName, data);\n\n const details = Object.create(null);\n if (data) {\n for (const key in data) {\n const value = data[key];\n if (key === \"source\") {\n if (value === window || value === document) {\n return; // No need to re-dispatch (already) global events.\n }\n continue; // Ignore the `source` property.\n }\n details[key] = value;\n }\n }\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventName, true, true, details);\n document.dispatchEvent(event);\n }\n}\n\nexport { AutomationEventBus, EventBus, waitOnEventOrTimeout, WaitOnType };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, __non_webpack_require__ */\n\n\"use strict\";\n\nlet pdfjsLib;\nif (typeof window !== \"undefined\" && window[\"pdfjs-dist/build/pdf\"]) {\n pdfjsLib = window[\"pdfjs-dist/build/pdf\"];\n} else {\n pdfjsLib = __non_webpack_require__(\"../build/pdf.js\");\n}\nmodule.exports = pdfjsLib;\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GrabToPan } from \"./grab_to_pan.js\";\nimport { PresentationModeState } from \"./ui_utils.js\";\n\nconst CursorTool = {\n SELECT: 0, // The default value.\n HAND: 1,\n ZOOM: 2,\n};\n\n/**\n * @typedef {Object} PDFCursorToolsOptions\n * @property {HTMLDivElement} container - The document container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\n * on load; the constants from {CursorTool} should be used. The default value\n * is `CursorTool.SELECT`.\n */\n\nclass PDFCursorTools {\n /**\n * @param {PDFCursorToolsOptions} options\n */\n constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\n this.container = container;\n this.eventBus = eventBus;\n\n this.active = CursorTool.SELECT;\n this.activeBeforePresentationMode = null;\n\n this.handTool = new GrabToPan({\n element: this.container,\n });\n\n this._addEventListeners();\n\n // Defer the initial `switchTool` call, to give other viewer components\n // time to initialize *and* register 'cursortoolchanged' event listeners.\n Promise.resolve().then(() => {\n this.switchTool(cursorToolOnLoad);\n });\n }\n\n /**\n * @type {number} One of the values in {CursorTool}.\n */\n get activeTool() {\n return this.active;\n }\n\n /**\n * NOTE: This method is ignored while Presentation Mode is active.\n * @param {number} tool - The cursor mode that should be switched to,\n * must be one of the values in {CursorTool}.\n */\n switchTool(tool) {\n if (this.activeBeforePresentationMode !== null) {\n return; // Cursor tools cannot be used in Presentation Mode.\n }\n if (tool === this.active) {\n return; // The requested tool is already active.\n }\n\n const disableActiveTool = () => {\n switch (this.active) {\n case CursorTool.SELECT:\n break;\n case CursorTool.HAND:\n this.handTool.deactivate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n }\n };\n\n // Enable the new cursor tool.\n switch (tool) {\n case CursorTool.SELECT:\n disableActiveTool();\n break;\n case CursorTool.HAND:\n disableActiveTool();\n this.handTool.activate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n default:\n console.error(`switchTool: \"${tool}\" is an unsupported value.`);\n return;\n }\n // Update the active tool *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = tool;\n\n this._dispatchEvent();\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"cursortoolchanged\", {\n source: this,\n tool: this.active,\n });\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.eventBus._on(\"switchcursortool\", evt => {\n this.switchTool(evt.tool);\n });\n\n this.eventBus._on(\"presentationmodechanged\", evt => {\n switch (evt.state) {\n case PresentationModeState.FULLSCREEN: {\n const previouslyActive = this.active;\n\n this.switchTool(CursorTool.SELECT);\n this.activeBeforePresentationMode = previouslyActive;\n break;\n }\n case PresentationModeState.NORMAL: {\n const previouslyActive = this.activeBeforePresentationMode;\n\n this.activeBeforePresentationMode = null;\n this.switchTool(previouslyActive);\n break;\n }\n }\n });\n }\n}\n\nexport { CursorTool, PDFCursorTools };\n","/* Copyright 2013 Rob Wu <rob@robwu.nl>\n * https://github.com/Rob--W/grab-to-pan.js\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Class name of element which can be grabbed.\nconst CSS_CLASS_GRAB = \"grab-to-pan-grab\";\n\nclass GrabToPan {\n /**\n * Construct a GrabToPan instance for a given HTML element.\n * @param {Element} options.element\n * @param {function} [options.ignoreTarget] - See `ignoreTarget(node)`.\n * @param {function(boolean)} [options.onActiveChanged] - Called when\n * grab-to-pan is (de)activated. The first argument is a boolean that\n * shows whether grab-to-pan is activated.\n */\n constructor(options) {\n this.element = options.element;\n this.document = options.element.ownerDocument;\n if (typeof options.ignoreTarget === \"function\") {\n this.ignoreTarget = options.ignoreTarget;\n }\n this.onActiveChanged = options.onActiveChanged;\n\n // Bind the contexts to ensure that `this` always points to\n // the GrabToPan instance.\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.toggle = this.toggle.bind(this);\n this._onMouseDown = this.#onMouseDown.bind(this);\n this._onMouseMove = this.#onMouseMove.bind(this);\n this._endPan = this.#endPan.bind(this);\n\n // This overlay will be inserted in the document when the mouse moves during\n // a grab operation, to ensure that the cursor has the desired appearance.\n const overlay = (this.overlay = document.createElement(\"div\"));\n overlay.className = \"grab-to-pan-grabbing\";\n }\n\n /**\n * Bind a mousedown event to the element to enable grab-detection.\n */\n activate() {\n if (!this.active) {\n this.active = true;\n this.element.addEventListener(\"mousedown\", this._onMouseDown, true);\n this.element.classList.add(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(true);\n }\n }\n\n /**\n * Removes all events. Any pending pan session is immediately stopped.\n */\n deactivate() {\n if (this.active) {\n this.active = false;\n this.element.removeEventListener(\"mousedown\", this._onMouseDown, true);\n this._endPan();\n this.element.classList.remove(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(false);\n }\n }\n\n toggle() {\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n /**\n * Whether to not pan if the target element is clicked.\n * Override this method to change the default behaviour.\n *\n * @param {Element} node - The target of the event.\n * @returns {boolean} Whether to not react to the click event.\n */\n ignoreTarget(node) {\n // Check whether the clicked element is, a child of, an input element/link.\n return node.matches(\n \"a[href], a[href] *, input, textarea, button, button *, select, option\"\n );\n }\n\n #onMouseDown(event) {\n if (event.button !== 0 || this.ignoreTarget(event.target)) {\n return;\n }\n if (event.originalTarget) {\n try {\n // eslint-disable-next-line no-unused-expressions\n event.originalTarget.tagName;\n } catch (e) {\n // Mozilla-specific: element is a scrollbar (XUL element)\n return;\n }\n }\n\n this.scrollLeftStart = this.element.scrollLeft;\n this.scrollTopStart = this.element.scrollTop;\n this.clientXStart = event.clientX;\n this.clientYStart = event.clientY;\n this.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.addEventListener(\"mouseup\", this._endPan, true);\n // When a scroll event occurs before a mousemove, assume that the user\n // dragged a scrollbar (necessary for Opera Presto, Safari and IE)\n // (not needed for Chrome/Firefox)\n this.element.addEventListener(\"scroll\", this._endPan, true);\n event.preventDefault();\n event.stopPropagation();\n\n const focusedElement = document.activeElement;\n if (focusedElement && !focusedElement.contains(event.target)) {\n focusedElement.blur();\n }\n }\n\n #onMouseMove(event) {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n if (!(event.buttons & 1)) {\n // The left mouse button is released.\n this._endPan();\n return;\n }\n const xDiff = event.clientX - this.clientXStart;\n const yDiff = event.clientY - this.clientYStart;\n const scrollTop = this.scrollTopStart - yDiff;\n const scrollLeft = this.scrollLeftStart - xDiff;\n if (this.element.scrollTo) {\n this.element.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: \"instant\",\n });\n } else {\n this.element.scrollTop = scrollTop;\n this.element.scrollLeft = scrollLeft;\n }\n if (!this.overlay.parentNode) {\n document.body.appendChild(this.overlay);\n }\n }\n\n #endPan() {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n this.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.removeEventListener(\"mouseup\", this._endPan, true);\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.overlay.remove();\n }\n}\n\nexport { GrabToPan };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { parseQueryString, removeNullCharacters } from \"./ui_utils.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n if (!url || typeof url !== \"string\") {\n throw new Error('A valid \"url\" parameter must provided.');\n }\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n #pagesRefCache = new Map();\n\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({\n eventBus,\n externalLinkTarget = null,\n externalLinkRel = null,\n ignoreDestinationZoom = false,\n } = {}) {\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.externalLinkEnabled = true;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n }\n\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this.#pagesRefCache.clear();\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfViewer.pagesRotation;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {\n this.pdfViewer.pagesRotation = value;\n }\n\n #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {\n // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>\n const destRef = explicitDest[0];\n let pageNumber;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument\n .getPageIndex(destRef)\n .then(pageIndex => {\n this.cachePageRef(pageIndex + 1, destRef);\n this.#goToDestinationHelper(rawDest, namedDest, explicitDest);\n })\n .catch(() => {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${rawDest}\".`\n );\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${rawDest}\".`\n );\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${rawDest}\".`\n );\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = await this.pdfDocument.getDestination(dest);\n } else {\n namedDest = null;\n explicitDest = await dest;\n }\n if (!Array.isArray(explicitDest)) {\n console.error(\n `PDFLinkService.goToDestination: \"${explicitDest}\" is not ` +\n `a valid destination array, for dest=\"${dest}\".`\n );\n return;\n }\n this.#goToDestinationHelper(dest, namedDest, explicitDest);\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber =\n (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n\n /**\n * Wrapper around the `addLinkAttributes` helper function.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, {\n url,\n target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\n rel: this.externalLinkRel,\n enabled: this.externalLinkEnabled,\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n } else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in <base href>.\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || \"\") + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: params.get(\"search\").replace(/\"/g, \"\"),\n phraseSearch: params.get(\"phrase\") === \"true\",\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n } else {\n if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n } else if (\n zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\"\n ) {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n } else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".'\n );\n } else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n } else {\n console.error(\n `PDFLinkService.setHash: \"${zoomArg}\" is not a valid zoom value.`\n );\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n } else {\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (\n typeof dest === \"string\" ||\n PDFLinkService.#isValidExplicitDestination(dest)\n ) {\n this.goToDestination(dest);\n return;\n }\n console.error(\n `PDFLinkService.setHash: \"${unescape(\n hash\n )}\" is not a valid destination.`\n );\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n this.pdfHistory?.back();\n break;\n\n case \"GoForward\":\n this.pdfHistory?.forward();\n break;\n\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n\n case \"FirstPage\":\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n this.#pagesRefCache.set(refStr, pageNum);\n }\n\n /**\n * @ignore\n */\n _cachedPageNumber(pageRef) {\n if (!pageRef) {\n return null;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n return this.#pagesRefCache.get(refStr) || null;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return this.pdfViewer.isPageVisible(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return this.pdfViewer.isPageCached(pageNumber);\n }\n\n static #isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n const destLength = dest.length;\n if (destLength < 2) {\n return false;\n }\n const page = dest[0];\n if (\n !(\n typeof page === \"object\" &&\n Number.isInteger(page.num) &&\n Number.isInteger(page.gen)\n ) &&\n !(Number.isInteger(page) && page >= 0)\n ) {\n return false;\n }\n const zoom = dest[1];\n if (!(typeof zoom === \"object\" && typeof zoom.name === \"string\")) {\n return false;\n }\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (destLength !== 5) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return destLength === 2;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (destLength !== 3) {\n return false;\n }\n break;\n case \"FitR\":\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n const param = dest[i];\n if (!(typeof param === \"number\" || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @implements {IPDFLinkService}\n */\nclass SimpleLinkService {\n constructor() {\n this.externalLinkEnabled = true;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {}\n\n /**\n * @type {number}\n */\n get rotation() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {}\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {}\n\n /**\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {}\n\n /**\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, { url, enabled: this.externalLinkEnabled });\n }\n\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return \"#\";\n }\n\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return \"#\";\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return true;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return true;\n }\n}\n\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass OverlayManager {\n constructor() {\n this._overlays = {};\n this._active = null;\n this._keyDownBound = this._keyDown.bind(this);\n }\n\n get active() {\n return this._active;\n }\n\n /**\n * @param {string} name - The name of the overlay that is registered.\n * @param {HTMLDivElement} element - The overlay's DOM element.\n * @param {function} [callerCloseMethod] - The method that, if present, calls\n * `OverlayManager.close` from the object registering the\n * overlay. Access to this method is necessary in order to\n * run cleanup code when e.g. the overlay is force closed.\n * The default is `null`.\n * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\n * an active overlay. The default is `false`.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * registered.\n */\n async register(\n name,\n element,\n callerCloseMethod = null,\n canForceClose = false\n ) {\n let container;\n if (!name || !element || !(container = element.parentNode)) {\n throw new Error(\"Not enough parameters.\");\n } else if (this._overlays[name]) {\n throw new Error(\"The overlay is already registered.\");\n }\n this._overlays[name] = {\n element,\n container,\n callerCloseMethod,\n canForceClose,\n };\n }\n\n /**\n * @param {string} name - The name of the overlay that is unregistered.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * unregistered.\n */\n async unregister(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active === name) {\n throw new Error(\"The overlay cannot be removed while it is active.\");\n }\n delete this._overlays[name];\n }\n\n /**\n * @param {string} name - The name of the overlay that should be opened.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * opened.\n */\n async open(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this._active) {\n if (this._overlays[name].canForceClose) {\n this._closeThroughCaller();\n } else if (this._active === name) {\n throw new Error(\"The overlay is already active.\");\n } else {\n throw new Error(\"Another overlay is currently active.\");\n }\n }\n this._active = name;\n this._overlays[this._active].element.classList.remove(\"hidden\");\n this._overlays[this._active].container.classList.remove(\"hidden\");\n\n window.addEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @param {string} name - The name of the overlay that should be closed.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * closed.\n */\n async close(name) {\n if (!this._overlays[name]) {\n throw new Error(\"The overlay does not exist.\");\n } else if (!this._active) {\n throw new Error(\"The overlay is currently not active.\");\n } else if (this._active !== name) {\n throw new Error(\"Another overlay is currently active.\");\n }\n this._overlays[this._active].container.classList.add(\"hidden\");\n this._overlays[this._active].element.classList.add(\"hidden\");\n this._active = null;\n\n window.removeEventListener(\"keydown\", this._keyDownBound);\n }\n\n /**\n * @private\n */\n _keyDown(evt) {\n if (this._active && evt.keyCode === /* Esc = */ 27) {\n this._closeThroughCaller();\n evt.preventDefault();\n }\n }\n\n /**\n * @private\n */\n _closeThroughCaller() {\n if (this._overlays[this._active].callerCloseMethod) {\n this._overlays[this._active].callerCloseMethod();\n }\n if (this._active) {\n this.close(this._active);\n }\n }\n}\n\nexport { OverlayManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PasswordResponses } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PasswordPromptOptions\n * @property {string} overlayName - Name of the overlay for the overlay manager.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLParagraphElement} label - Label containing instructions for\n * entering the password.\n * @property {HTMLInputElement} input - Input field for entering the password.\n * @property {HTMLButtonElement} submitButton - Button for submitting the\n * password.\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\n * entry.\n */\n\nclass PasswordPrompt {\n /**\n * @param {PasswordPromptOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\n * an <iframe> or an <object>. The default value is `false`.\n */\n constructor(options, overlayManager, l10n, isViewerEmbedded = false) {\n this.overlayName = options.overlayName;\n this.container = options.container;\n this.label = options.label;\n this.input = options.input;\n this.submitButton = options.submitButton;\n this.cancelButton = options.cancelButton;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n this._isViewerEmbedded = isViewerEmbedded;\n\n this.updateCallback = null;\n this.reason = null;\n\n // Attach the event listeners.\n this.submitButton.addEventListener(\"click\", this.#verify.bind(this));\n this.cancelButton.addEventListener(\"click\", this.#cancel.bind(this));\n this.input.addEventListener(\"keydown\", e => {\n if (e.keyCode === /* Enter = */ 13) {\n this.#verify();\n }\n });\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.#cancel.bind(this),\n true\n );\n }\n\n async open() {\n await this.overlayManager.open(this.overlayName);\n\n const passwordIncorrect =\n this.reason === PasswordResponses.INCORRECT_PASSWORD;\n\n if (!this._isViewerEmbedded || passwordIncorrect) {\n this.input.focus();\n }\n this.label.textContent = await this.l10n.get(\n `password_${passwordIncorrect ? \"invalid\" : \"label\"}`\n );\n }\n\n async close() {\n await this.overlayManager.close(this.overlayName);\n this.input.value = \"\";\n }\n\n #verify() {\n const password = this.input.value;\n if (password?.length > 0) {\n this.close();\n this.updateCallback(password);\n }\n }\n\n #cancel() {\n this.close();\n this.updateCallback(new Error(\"PasswordPrompt cancelled.\"));\n }\n\n setUpdateCallback(updateCallback, reason) {\n this.updateCallback = updateCallback;\n this.reason = reason;\n }\n}\n\nexport { PasswordPrompt };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability, getFilenameFromUrl } from \"pdfjs-lib\";\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFAttachmentViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {DownloadManager} downloadManager - The download manager.\n */\n\n/**\n * @typedef {Object} PDFAttachmentViewerRenderParameters\n * @property {Object|null} attachments - A lookup table of attachment objects.\n */\n\nclass PDFAttachmentViewer extends BaseTreeViewer {\n /**\n * @param {PDFAttachmentViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.downloadManager = options.downloadManager;\n\n this.eventBus._on(\n \"fileattachmentannotation\",\n this._appendAttachment.bind(this)\n );\n }\n\n reset(keepRenderedCapability = false) {\n super.reset();\n this._attachments = null;\n\n if (!keepRenderedCapability) {\n // The only situation in which the `_renderedCapability` should *not* be\n // replaced is when appending FileAttachment annotations.\n this._renderedCapability = createPromiseCapability();\n }\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n }\n this._pendingDispatchEvent = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(attachmentsCount) {\n this._renderedCapability.resolve();\n\n if (this._pendingDispatchEvent) {\n clearTimeout(this._pendingDispatchEvent);\n this._pendingDispatchEvent = null;\n }\n if (attachmentsCount === 0) {\n // Delay the event when no \"regular\" attachments exist, to allow time for\n // parsing of any FileAttachment annotations that may be present on the\n // *initially* rendered page; this reduces the likelihood of temporarily\n // disabling the attachmentsView when the `PDFSidebar` handles the event.\n this._pendingDispatchEvent = setTimeout(() => {\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount: 0,\n });\n this._pendingDispatchEvent = null;\n });\n return;\n }\n\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { content, filename }) {\n element.onclick = () => {\n this.downloadManager.openOrDownloadData(element, content, filename);\n return false;\n };\n }\n\n /**\n * @param {PDFAttachmentViewerRenderParameters} params\n */\n render({ attachments, keepRenderedCapability = false }) {\n if (this._attachments) {\n this.reset(keepRenderedCapability);\n }\n this._attachments = attachments || null;\n\n if (!attachments) {\n this._dispatchEvent(/* attachmentsCount = */ 0);\n return;\n }\n const names = Object.keys(attachments).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n\n const fragment = document.createDocumentFragment();\n let attachmentsCount = 0;\n for (const name of names) {\n const item = attachments[name];\n const content = item.content,\n filename = getFilenameFromUrl(item.filename);\n\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, { content, filename });\n element.textContent = this._normalizeTextContent(filename);\n\n div.appendChild(element);\n\n fragment.appendChild(div);\n attachmentsCount++;\n }\n\n this._finishRendering(fragment, attachmentsCount);\n }\n\n /**\n * Used to append FileAttachment annotations to the sidebar.\n * @private\n */\n _appendAttachment({ id, filename, content }) {\n const renderedPromise = this._renderedCapability.promise;\n\n renderedPromise.then(() => {\n if (renderedPromise !== this._renderedCapability.promise) {\n return; // The FileAttachment annotation belongs to a previous document.\n }\n let attachments = this._attachments;\n\n if (!attachments) {\n attachments = Object.create(null);\n } else {\n for (const name in attachments) {\n if (id === name) {\n return; // Ignore the new attachment if it already exists.\n }\n }\n }\n attachments[id] = {\n filename,\n content,\n };\n this.render({\n attachments,\n keepRenderedCapability: true,\n });\n });\n }\n}\n\nexport { PDFAttachmentViewer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { removeNullCharacters } from \"./ui_utils.js\";\n\nconst TREEITEM_OFFSET_TOP = -100; // px\nconst TREEITEM_SELECTED_CLASS = \"selected\";\n\nclass BaseTreeViewer {\n constructor(options) {\n if (this.constructor === BaseTreeViewer) {\n throw new Error(\"Cannot initialize BaseTreeViewer.\");\n }\n this.container = options.container;\n this.eventBus = options.eventBus;\n\n this.reset();\n }\n\n reset() {\n this._pdfDocument = null;\n this._lastToggleIsShow = true;\n this._currentTreeItem = null;\n\n // Remove the tree from the DOM.\n this.container.textContent = \"\";\n // Ensure that the left (right in RTL locales) margin is always reset,\n // to prevent incorrect tree alignment if a new document is opened.\n this.container.classList.remove(\"treeWithDeepNesting\");\n }\n\n /**\n * @private\n */\n _dispatchEvent(count) {\n throw new Error(\"Not implemented: _dispatchEvent\");\n }\n\n /**\n * @private\n */\n _bindLink(element, params) {\n throw new Error(\"Not implemented: _bindLink\");\n }\n\n /**\n * @private\n */\n _normalizeTextContent(str) {\n // Chars in range [0x01-0x1F] will be replaced with a white space\n // and 0x00 by \"\".\n return (\n removeNullCharacters(str, /* replaceInvisible */ true) ||\n /* en dash = */ \"\\u2013\"\n );\n }\n\n /**\n * Prepend a button before a tree item which allows the user to collapse or\n * expand all tree items at that level; see `_toggleTreeItem`.\n * @private\n */\n _addToggleButton(div, hidden = false) {\n const toggler = document.createElement(\"div\");\n toggler.className = \"treeItemToggler\";\n if (hidden) {\n toggler.classList.add(\"treeItemsHidden\");\n }\n toggler.onclick = evt => {\n evt.stopPropagation();\n toggler.classList.toggle(\"treeItemsHidden\");\n\n if (evt.shiftKey) {\n const shouldShowAll = !toggler.classList.contains(\"treeItemsHidden\");\n this._toggleTreeItem(div, shouldShowAll);\n }\n };\n div.insertBefore(toggler, div.firstChild);\n }\n\n /**\n * Collapse or expand the subtree of a tree item.\n *\n * @param {Element} root - the root of the item (sub)tree.\n * @param {boolean} show - whether to show the item (sub)tree. If false,\n * the item subtree rooted at `root` will be collapsed.\n * @private\n */\n _toggleTreeItem(root, show = false) {\n this._lastToggleIsShow = show;\n for (const toggler of root.querySelectorAll(\".treeItemToggler\")) {\n toggler.classList.toggle(\"treeItemsHidden\", !show);\n }\n }\n\n /**\n * Collapse or expand all subtrees of the `container`.\n * @private\n */\n _toggleAllTreeItems() {\n this._toggleTreeItem(this.container, !this._lastToggleIsShow);\n }\n\n /**\n * @private\n */\n _finishRendering(fragment, count, hasAnyNesting = false) {\n if (hasAnyNesting) {\n this.container.classList.add(\"treeWithDeepNesting\");\n\n this._lastToggleIsShow = !fragment.querySelector(\".treeItemsHidden\");\n }\n this.container.appendChild(fragment);\n\n this._dispatchEvent(count);\n }\n\n render(params) {\n throw new Error(\"Not implemented: render\");\n }\n\n /**\n * @private\n */\n _updateCurrentTreeItem(treeItem = null) {\n if (this._currentTreeItem) {\n // Ensure that the current treeItem-selection is always removed.\n this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = null;\n }\n if (treeItem) {\n treeItem.classList.add(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = treeItem;\n }\n }\n\n /**\n * @private\n */\n _scrollToCurrentTreeItem(treeItem) {\n if (!treeItem) {\n return;\n }\n // Ensure that the treeItem is *fully* expanded, such that it will first of\n // all be visible and secondly that scrolling it into view works correctly.\n let currentNode = treeItem.parentNode;\n while (currentNode && currentNode !== this.container) {\n if (currentNode.classList.contains(\"treeItem\")) {\n const toggler = currentNode.firstElementChild;\n toggler?.classList.remove(\"treeItemsHidden\");\n }\n currentNode = currentNode.parentNode;\n }\n this._updateCurrentTreeItem(treeItem);\n\n this.container.scrollTo(\n treeItem.offsetLeft,\n treeItem.offsetTop + TREEITEM_OFFSET_TOP\n );\n }\n}\n\nexport { BaseTreeViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability,\n getPdfFilenameFromUrl,\n PDFDateString,\n} from \"pdfjs-lib\";\nimport { getPageSizeInches, isPortraitOrientation } from \"./ui_utils.js\";\n\nconst DEFAULT_FIELD_CONTENT = \"-\";\n\n// See https://en.wikibooks.org/wiki/Lentis/Conversion_to_the_Metric_Standard_in_the_United_States\nconst NON_METRIC_LOCALES = [\"en-us\", \"en-lr\", \"my\"];\n\n// Should use the format: `width x height`, in portrait orientation.\n// See https://en.wikipedia.org/wiki/Paper_size\nconst US_PAGE_NAMES = {\n \"8.5x11\": \"Letter\",\n \"8.5x14\": \"Legal\",\n};\nconst METRIC_PAGE_NAMES = {\n \"297x420\": \"A3\",\n \"210x297\": \"A4\",\n};\n\nfunction getPageName(size, isPortrait, pageNames) {\n const width = isPortrait ? size.width : size.height;\n const height = isPortrait ? size.height : size.width;\n\n return pageNames[`${width}x${height}`];\n}\n\n/**\n * @typedef {Object} PDFDocumentPropertiesOptions\n * @property {string} overlayName - Name/identifier for the overlay.\n * @property {Object} fields - Names and elements of the overlay's fields.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\n */\n\nclass PDFDocumentProperties {\n /**\n * @param {PDFDocumentPropertiesOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(\n { overlayName, fields, container, closeButton },\n overlayManager,\n eventBus,\n l10n\n ) {\n this.overlayName = overlayName;\n this.fields = fields;\n this.container = container;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this._reset();\n // Bind the event listener for the Close button.\n closeButton.addEventListener(\"click\", this.close.bind(this));\n\n this.overlayManager.register(\n this.overlayName,\n this.container,\n this.close.bind(this)\n );\n\n eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n eventBus._on(\"rotationchanging\", evt => {\n this._pagesRotation = evt.pagesRotation;\n });\n\n this._isNonMetricLocale = true; // The default viewer locale is 'en-us'.\n l10n.getLanguage().then(locale => {\n this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);\n });\n }\n\n /**\n * Open the document properties overlay.\n */\n async open() {\n const freezeFieldData = data => {\n Object.defineProperty(this, \"fieldData\", {\n value: Object.freeze(data),\n writable: false,\n enumerable: true,\n configurable: true,\n });\n };\n\n await Promise.all([\n this.overlayManager.open(this.overlayName),\n this._dataAvailableCapability.promise,\n ]);\n const currentPageNumber = this._currentPageNumber;\n const pagesRotation = this._pagesRotation;\n\n // If the document properties were previously fetched (for this PDF file),\n // just update the dialog immediately to avoid redundant lookups.\n if (\n this.fieldData &&\n currentPageNumber === this.fieldData._currentPageNumber &&\n pagesRotation === this.fieldData._pagesRotation\n ) {\n this._updateUI();\n return;\n }\n\n // Get the document properties.\n const {\n info,\n /* metadata, */\n contentDispositionFilename,\n contentLength,\n } = await this.pdfDocument.getMetadata();\n\n const [\n fileName,\n fileSize,\n creationDate,\n modificationDate,\n pageSize,\n isLinearized,\n ] = await Promise.all([\n contentDispositionFilename || getPdfFilenameFromUrl(this.url),\n this._parseFileSize(contentLength),\n this._parseDate(info.CreationDate),\n this._parseDate(info.ModDate),\n this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\n return this._parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\n }),\n this._parseLinearization(info.IsLinearized),\n ]);\n\n freezeFieldData({\n fileName,\n fileSize,\n title: info.Title,\n author: info.Author,\n subject: info.Subject,\n keywords: info.Keywords,\n creationDate,\n modificationDate,\n creator: info.Creator,\n producer: info.Producer,\n version: info.PDFFormatVersion,\n pageCount: this.pdfDocument.numPages,\n pageSize,\n linearized: isLinearized,\n _currentPageNumber: currentPageNumber,\n _pagesRotation: pagesRotation,\n });\n this._updateUI();\n\n // Get the correct fileSize, since it may not have been available\n // or could potentially be wrong.\n const { length } = await this.pdfDocument.getDownloadInfo();\n if (contentLength === length) {\n return; // The fileSize has already been correctly set.\n }\n const data = Object.assign(Object.create(null), this.fieldData);\n data.fileSize = await this._parseFileSize(length);\n\n freezeFieldData(data);\n this._updateUI();\n }\n\n /**\n * Close the document properties overlay.\n */\n close() {\n this.overlayManager.close(this.overlayName);\n }\n\n /**\n * Set a reference to the PDF document and the URL in order\n * to populate the overlay fields with the document properties.\n * Note that the overlay will contain no information if this method\n * is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\n * @param {string} url - The URL of the document.\n */\n setDocument(pdfDocument, url = null) {\n if (this.pdfDocument) {\n this._reset();\n this._updateUI(true);\n }\n if (!pdfDocument) {\n return;\n }\n this.pdfDocument = pdfDocument;\n this.url = url;\n\n this._dataAvailableCapability.resolve();\n }\n\n /**\n * @private\n */\n _reset() {\n this.pdfDocument = null;\n this.url = null;\n\n delete this.fieldData;\n this._dataAvailableCapability = createPromiseCapability();\n this._currentPageNumber = 1;\n this._pagesRotation = 0;\n }\n\n /**\n * Always updates all of the dialog fields, to prevent inconsistent UI state.\n * NOTE: If the contents of a particular field is neither a non-empty string,\n * nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\n * @private\n */\n _updateUI(reset = false) {\n if (reset || !this.fieldData) {\n for (const id in this.fields) {\n this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n }\n return;\n }\n if (this.overlayManager.active !== this.overlayName) {\n // Don't bother updating the dialog if has already been closed,\n // since it will be updated the next time `this.open` is called.\n return;\n }\n for (const id in this.fields) {\n const content = this.fieldData[id];\n this.fields[id].textContent =\n content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n }\n }\n\n /**\n * @private\n */\n async _parseFileSize(fileSize = 0) {\n const kb = fileSize / 1024,\n mb = kb / 1024;\n if (!kb) {\n return undefined;\n }\n return this.l10n.get(`document_properties_${mb >= 1 ? \"mb\" : \"kb\"}`, {\n size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\n size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n });\n }\n\n /**\n * @private\n */\n async _parsePageSize(pageSizeInches, pagesRotation) {\n if (!pageSizeInches) {\n return undefined;\n }\n // Take the viewer rotation into account as well; compare with Adobe Reader.\n if (pagesRotation % 180 !== 0) {\n pageSizeInches = {\n width: pageSizeInches.height,\n height: pageSizeInches.width,\n };\n }\n const isPortrait = isPortraitOrientation(pageSizeInches);\n\n let sizeInches = {\n width: Math.round(pageSizeInches.width * 100) / 100,\n height: Math.round(pageSizeInches.height * 100) / 100,\n };\n // 1in == 25.4mm; no need to round to 2 decimals for millimeters.\n let sizeMillimeters = {\n width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,\n height: Math.round(pageSizeInches.height * 25.4 * 10) / 10,\n };\n\n let rawName =\n getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\n getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n\n if (\n !rawName &&\n !(\n Number.isInteger(sizeMillimeters.width) &&\n Number.isInteger(sizeMillimeters.height)\n )\n ) {\n // Attempt to improve the page name detection by falling back to fuzzy\n // matching of the metric dimensions, to account for e.g. rounding errors\n // and/or PDF files that define the page sizes in an imprecise manner.\n const exactMillimeters = {\n width: pageSizeInches.width * 25.4,\n height: pageSizeInches.height * 25.4,\n };\n const intMillimeters = {\n width: Math.round(sizeMillimeters.width),\n height: Math.round(sizeMillimeters.height),\n };\n\n // Try to avoid false positives, by only considering \"small\" differences.\n if (\n Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 &&\n Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1\n ) {\n rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n if (rawName) {\n // Update *both* sizes, computed above, to ensure that the displayed\n // dimensions always correspond to the detected page name.\n sizeInches = {\n width: Math.round((intMillimeters.width / 25.4) * 100) / 100,\n height: Math.round((intMillimeters.height / 25.4) * 100) / 100,\n };\n sizeMillimeters = intMillimeters;\n }\n }\n }\n\n const [{ width, height }, unit, name, orientation] = await Promise.all([\n this._isNonMetricLocale ? sizeInches : sizeMillimeters,\n this.l10n.get(\n `document_properties_page_size_unit_${\n this._isNonMetricLocale ? \"inches\" : \"millimeters\"\n }`\n ),\n rawName &&\n this.l10n.get(\n `document_properties_page_size_name_${rawName.toLowerCase()}`\n ),\n this.l10n.get(\n `document_properties_page_size_orientation_${\n isPortrait ? \"portrait\" : \"landscape\"\n }`\n ),\n ]);\n\n return this.l10n.get(\n `document_properties_page_size_dimension_${name ? \"name_\" : \"\"}string`,\n {\n width: width.toLocaleString(),\n height: height.toLocaleString(),\n unit,\n name,\n orientation,\n }\n );\n }\n\n /**\n * @private\n */\n async _parseDate(inputDate) {\n const dateObject = PDFDateString.toDateObject(inputDate);\n if (!dateObject) {\n return undefined;\n }\n return this.l10n.get(\"document_properties_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n }\n\n /**\n * @private\n */\n _parseLinearization(isLinearized) {\n return this.l10n.get(\n `document_properties_linearized_${isLinearized ? \"yes\" : \"no\"}`\n );\n }\n}\n\nexport { PDFDocumentProperties };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FindState } from \"./pdf_find_controller.js\";\n\nconst MATCHES_COUNT_LIMIT = 1000;\n\n/**\n * Creates a \"search bar\" given a set of DOM elements that act as controls\n * for searching or for setting search preferences in the UI. This object\n * also sets up the appropriate events for the controls. Actual searching\n * is done by PDFFindController.\n */\nclass PDFFindBar {\n constructor(options, eventBus, l10n) {\n this.opened = false;\n\n this.bar = options.bar;\n this.toggleButton = options.toggleButton;\n this.findField = options.findField;\n this.highlightAll = options.highlightAllCheckbox;\n this.caseSensitive = options.caseSensitiveCheckbox;\n this.matchDiacritics = options.matchDiacriticsCheckbox;\n this.entireWord = options.entireWordCheckbox;\n this.findMsg = options.findMsg;\n this.findResultsCount = options.findResultsCount;\n this.findPreviousButton = options.findPreviousButton;\n this.findNextButton = options.findNextButton;\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n // Add event listeners to the DOM elements.\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n this.findField.addEventListener(\"input\", () => {\n this.dispatchEvent(\"\");\n });\n\n this.bar.addEventListener(\"keydown\", e => {\n switch (e.keyCode) {\n case 13: // Enter\n if (e.target === this.findField) {\n this.dispatchEvent(\"again\", e.shiftKey);\n }\n break;\n case 27: // Escape\n this.close();\n break;\n }\n });\n\n this.findPreviousButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", true);\n });\n\n this.findNextButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", false);\n });\n\n this.highlightAll.addEventListener(\"click\", () => {\n this.dispatchEvent(\"highlightallchange\");\n });\n\n this.caseSensitive.addEventListener(\"click\", () => {\n this.dispatchEvent(\"casesensitivitychange\");\n });\n\n this.entireWord.addEventListener(\"click\", () => {\n this.dispatchEvent(\"entirewordchange\");\n });\n\n this.matchDiacritics.addEventListener(\"click\", () => {\n this.dispatchEvent(\"diacriticmatchingchange\");\n });\n\n this.eventBus._on(\"resize\", this._adjustWidth.bind(this));\n }\n\n reset() {\n this.updateUIState();\n }\n\n dispatchEvent(type, findPrev = false) {\n this.eventBus.dispatch(\"find\", {\n source: this,\n type,\n query: this.findField.value,\n phraseSearch: true,\n caseSensitive: this.caseSensitive.checked,\n entireWord: this.entireWord.checked,\n highlightAll: this.highlightAll.checked,\n findPrevious: findPrev,\n matchDiacritics: this.matchDiacritics.checked,\n });\n }\n\n updateUIState(state, previous, matchesCount) {\n let findMsg = Promise.resolve(\"\");\n let status = \"\";\n\n switch (state) {\n case FindState.FOUND:\n break;\n case FindState.PENDING:\n status = \"pending\";\n break;\n case FindState.NOT_FOUND:\n findMsg = this.l10n.get(\"find_not_found\");\n status = \"notFound\";\n break;\n case FindState.WRAPPED:\n findMsg = this.l10n.get(`find_reached_${previous ? \"top\" : \"bottom\"}`);\n break;\n }\n this.findField.setAttribute(\"data-status\", status);\n\n findMsg.then(msg => {\n this.findMsg.textContent = msg;\n this._adjustWidth();\n });\n\n this.updateResultsCount(matchesCount);\n }\n\n updateResultsCount({ current = 0, total = 0 } = {}) {\n const limit = MATCHES_COUNT_LIMIT;\n let matchCountMsg = Promise.resolve(\"\");\n\n if (total > 0) {\n if (total > limit) {\n let key = \"find_match_count_limit\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { limit });\n } else {\n let key = \"find_match_count\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { current, total });\n }\n }\n matchCountMsg.then(msg => {\n this.findResultsCount.textContent = msg;\n // Since `updateResultsCount` may be called from `PDFFindController`,\n // ensure that the width of the findbar is always updated correctly.\n this._adjustWidth();\n });\n }\n\n open() {\n if (!this.opened) {\n this.opened = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.bar.classList.remove(\"hidden\");\n }\n this.findField.select();\n this.findField.focus();\n\n this._adjustWidth();\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.bar.classList.add(\"hidden\");\n\n this.eventBus.dispatch(\"findbarclose\", { source: this });\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _adjustWidth() {\n if (!this.opened) {\n return;\n }\n\n // The find bar has an absolute position and thus the browser extends\n // its width to the maximum possible width once the find bar does not fit\n // entirely within the window anymore (and its elements are automatically\n // wrapped). Here we detect and fix that.\n this.bar.classList.remove(\"wrapContainers\");\n\n const findbarHeight = this.bar.clientHeight;\n const inputContainerHeight = this.bar.firstElementChild.clientHeight;\n\n if (findbarHeight > inputContainerHeight) {\n // The findbar is taller than the input container, which means that\n // the browser wrapped some of the elements. For a consistent look,\n // wrap all of them to adjust the width of the find bar.\n this.bar.classList.add(\"wrapContainers\");\n }\n }\n}\n\nexport { PDFFindBar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { binarySearchFirstItem, scrollIntoView } from \"./ui_utils.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { getCharacterType } from \"./pdf_find_utils.js\";\n\nconst FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3,\n};\n\nconst FIND_TIMEOUT = 250; // ms\nconst MATCH_SCROLL_OFFSET_TOP = -50; // px\nconst MATCH_SCROLL_OFFSET_LEFT = -400; // px\n\nconst CHARACTERS_TO_NORMALIZE = {\n \"\\u2010\": \"-\", // Hyphen\n \"\\u2018\": \"'\", // Left single quotation mark\n \"\\u2019\": \"'\", // Right single quotation mark\n \"\\u201A\": \"'\", // Single low-9 quotation mark\n \"\\u201B\": \"'\", // Single high-reversed-9 quotation mark\n \"\\u201C\": '\"', // Left double quotation mark\n \"\\u201D\": '\"', // Right double quotation mark\n \"\\u201E\": '\"', // Double low-9 quotation mark\n \"\\u201F\": '\"', // Double high-reversed-9 quotation mark\n \"\\u00BC\": \"1/4\", // Vulgar fraction one quarter\n \"\\u00BD\": \"1/2\", // Vulgar fraction one half\n \"\\u00BE\": \"3/4\", // Vulgar fraction three quarters\n};\n\n// These diacritics aren't considered as combining diacritics\n// when searching in a document:\n// https://searchfox.org/mozilla-central/source/intl/unicharutil/util/is_combining_diacritic.py.\n// The combining class definitions can be found:\n// https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values\n// Category 0 corresponds to [^\\p{Mn}].\nconst DIACRITICS_EXCEPTION = new Set([\n // UNICODE_COMBINING_CLASS_KANA_VOICING\n // https://www.compart.com/fr/unicode/combining/8\n 0x3099, 0x309a,\n // UNICODE_COMBINING_CLASS_VIRAMA (under 0xFFFF)\n // https://www.compart.com/fr/unicode/combining/9\n 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b,\n 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714,\n 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f,\n 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed,\n // 91\n // https://www.compart.com/fr/unicode/combining/91\n 0x0c56,\n // 129\n // https://www.compart.com/fr/unicode/combining/129\n 0x0f71,\n // 130\n // https://www.compart.com/fr/unicode/combining/130\n 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80,\n // 132\n // https://www.compart.com/fr/unicode/combining/132\n 0x0f74,\n]);\nconst DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()]\n .map(x => String.fromCharCode(x))\n .join(\"\");\n\nconst DIACRITICS_REG_EXP = /\\p{M}+/gu;\nconst SPECIAL_CHARS_REG_EXP =\n /([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})/gu;\nconst NOT_DIACRITIC_FROM_END_REG_EXP = /([^\\p{M}])\\p{M}*$/u;\nconst NOT_DIACRITIC_FROM_START_REG_EXP = /^\\p{M}*([^\\p{M}])/u;\n\nlet normalizationRegex = null;\nfunction normalize(text) {\n // The diacritics in the text or in the query can be composed or not.\n // So we use a decomposed text using NFD (and the same for the query)\n // in order to be sure that diacritics are in the same order.\n\n if (!normalizationRegex) {\n // Compile the regular expression for text normalization once.\n const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\"\");\n normalizationRegex = new RegExp(\n `([${replace}])|(\\\\p{M}+(?:-\\\\n)?)|(\\\\S-\\\\n)|(\\\\n)`,\n \"gum\"\n );\n }\n\n // The goal of this function is to normalize the string and\n // be able to get from an index in the new string the\n // corresponding index in the old string.\n // For example if we have: abCd12ef456gh where C is replaced by ccc\n // and numbers replaced by nothing (it's the case for diacritics), then\n // we'll obtain the normalized string: abcccdefgh.\n // So here the reverse map is: [0,1,2,2,2,3,6,7,11,12].\n\n // The goal is to obtain the array: [[0, 0], [3, -1], [4, -2],\n // [6, 0], [8, 3]].\n // which can be used like this:\n // - let say that i is the index in new string and j the index\n // the old string.\n // - if i is in [0; 3[ then j = i + 0\n // - if i is in [3; 4[ then j = i - 1\n // - if i is in [4; 6[ then j = i - 2\n // ...\n // Thanks to a binary search it's easy to know where is i and what's the\n // shift.\n // Let say that the last entry in the array is [x, s] and we have a\n // substitution at index y (old string) which will replace o chars by n chars.\n // Firstly, if o === n, then no need to add a new entry: the shift is\n // the same.\n // Secondly, if o < n, then we push the n - o elements:\n // [y - (s - 1), s - 1], [y - (s - 2), s - 2], ...\n // Thirdly, if o > n, then we push the element: [y - (s - n), o + s - n]\n\n // Collect diacritics length and positions.\n const rawDiacriticsPositions = [];\n let m;\n while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {\n rawDiacriticsPositions.push([m[0].length, m.index]);\n }\n\n let normalized = text.normalize(\"NFD\");\n const positions = [[0, 0]];\n let k = 0;\n let shift = 0;\n let shiftOrigin = 0;\n let eol = 0;\n let hasDiacritics = false;\n\n normalized = normalized.replace(\n normalizationRegex,\n (match, p1, p2, p3, p4, i) => {\n i -= shiftOrigin;\n if (p1) {\n // Maybe fractions or quotations mark...\n const replacement = CHARACTERS_TO_NORMALIZE[match];\n const jj = replacement.length;\n for (let j = 1; j < jj; j++) {\n positions.push([i - shift + j, shift - j]);\n }\n shift -= jj - 1;\n return replacement;\n }\n\n if (p2) {\n const hasTrailingDashEOL = p2.endsWith(\"\\n\");\n const len = hasTrailingDashEOL ? p2.length - 2 : p2.length;\n\n // Diacritics.\n hasDiacritics = true;\n let jj = len;\n if (i + eol === rawDiacriticsPositions[k]?.[1]) {\n jj -= rawDiacriticsPositions[k][0];\n ++k;\n }\n\n for (let j = 1; j < jj + 1; j++) {\n // i is the position of the first diacritic\n // so (i - 1) is the position for the letter before.\n positions.push([i - 1 - shift + j, shift - j]);\n }\n shift -= jj;\n shiftOrigin += jj;\n\n if (hasTrailingDashEOL) {\n // Diacritics are followed by a -\\n.\n // See comments in `if (p3)` block.\n i += len - 1;\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p2.slice(0, len);\n }\n\n return p2;\n }\n\n if (p3) {\n // \"X-\\n\" is removed because an hyphen at the end of a line\n // with not a space before is likely here to mark a break\n // in a word.\n // The \\n isn't in the original text so here y = i, n = 1 and o = 2.\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p3.charAt(0);\n }\n\n // p4\n // eol is replaced by space: \"foo\\nbar\" is likely equivalent to\n // \"foo bar\".\n positions.push([i - shift + 1, shift - 1]);\n shift -= 1;\n shiftOrigin += 1;\n eol += 1;\n return \" \";\n }\n );\n\n positions.push([normalized.length, shift]);\n\n return [normalized, positions, hasDiacritics];\n}\n\n// Determine the original, non-normalized, match index such that highlighting of\n// search results is correct in the `textLayer` for strings containing e.g. \"½\"\n// characters; essentially \"inverting\" the result of the `normalize` function.\nfunction getOriginalIndex(diffs, pos, len) {\n if (!diffs) {\n return [pos, len];\n }\n\n const start = pos;\n const end = pos + len;\n let i = binarySearchFirstItem(diffs, x => x[0] >= start);\n if (diffs[i][0] > start) {\n --i;\n }\n\n let j = binarySearchFirstItem(diffs, x => x[0] >= end, i);\n if (diffs[j][0] > end) {\n --j;\n }\n\n return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];\n}\n\n/**\n * @typedef {Object} PDFFindControllerOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * Provides search functionality to find a given string in a PDF document.\n */\nclass PDFFindController {\n /**\n * @param {PDFFindControllerOptions} options\n */\n constructor({ linkService, eventBus }) {\n this._linkService = linkService;\n this._eventBus = eventBus;\n\n this._reset();\n eventBus._on(\"find\", this._onFind.bind(this));\n eventBus._on(\"findbarclose\", this._onFindBarClose.bind(this));\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.executeCommand = (cmd, state) => {\n console.error(\n \"Deprecated method `PDFFindController.executeCommand` called, \" +\n 'please dispatch a \"find\"-event using the EventBus instead.'\n );\n\n const eventState = Object.assign(Object.create(null), state, {\n type: cmd.substring(\"find\".length),\n });\n this._onFind(eventState);\n };\n }\n }\n\n get highlightMatches() {\n return this._highlightMatches;\n }\n\n get pageMatches() {\n return this._pageMatches;\n }\n\n get pageMatchesLength() {\n return this._pageMatchesLength;\n }\n\n get selected() {\n return this._selected;\n }\n\n get state() {\n return this._state;\n }\n\n /**\n * Set a reference to the PDF document in order to search it.\n * Note that searching is not possible if this method is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\n */\n setDocument(pdfDocument) {\n if (this._pdfDocument) {\n this._reset();\n }\n if (!pdfDocument) {\n return;\n }\n this._pdfDocument = pdfDocument;\n this._firstPageCapability.resolve();\n }\n\n /**\n * @private\n */\n _onFind(state) {\n if (!state) {\n return;\n }\n const pdfDocument = this._pdfDocument;\n const { type } = state;\n\n if (this._state === null || this._shouldDirtyMatch(state)) {\n this._dirtyMatch = true;\n }\n this._state = state;\n if (type !== \"highlightallchange\") {\n this._updateUIState(FindState.PENDING);\n }\n\n this._firstPageCapability.promise.then(() => {\n // If the document was closed before searching began, or if the search\n // operation was relevant for a previously opened document, do nothing.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n this._extractText();\n\n const findbarClosed = !this._highlightMatches;\n const pendingTimeout = !!this._findTimeout;\n\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n if (!type) {\n // Trigger the find action with a small delay to avoid starting the\n // search when the user is still typing (saving resources).\n this._findTimeout = setTimeout(() => {\n this._nextMatch();\n this._findTimeout = null;\n }, FIND_TIMEOUT);\n } else if (this._dirtyMatch) {\n // Immediately trigger searching for non-'find' operations, when the\n // current state needs to be reset and matches re-calculated.\n this._nextMatch();\n } else if (type === \"again\") {\n this._nextMatch();\n\n // When the findbar was previously closed, and `highlightAll` is set,\n // ensure that the matches on all active pages are highlighted again.\n if (findbarClosed && this._state.highlightAll) {\n this._updateAllPages();\n }\n } else if (type === \"highlightallchange\") {\n // If there was a pending search operation, synchronously trigger a new\n // search *first* to ensure that the correct matches are highlighted.\n if (pendingTimeout) {\n this._nextMatch();\n } else {\n this._highlightMatches = true;\n }\n this._updateAllPages(); // Update the highlighting on all active pages.\n } else {\n this._nextMatch();\n }\n });\n }\n\n scrollMatchIntoView({\n element = null,\n selectedLeft = 0,\n pageIndex = -1,\n matchIndex = -1,\n }) {\n if (!this._scrollMatches || !element) {\n return;\n } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\n return;\n } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\n return;\n }\n this._scrollMatches = false; // Ensure that scrolling only happens once.\n\n const spot = {\n top: MATCH_SCROLL_OFFSET_TOP,\n left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\n };\n scrollIntoView(element, spot, /* scrollMatches = */ true);\n }\n\n _reset() {\n this._highlightMatches = false;\n this._scrollMatches = false;\n this._pdfDocument = null;\n this._pageMatches = [];\n this._pageMatchesLength = [];\n this._state = null;\n // Currently selected match.\n this._selected = {\n pageIdx: -1,\n matchIdx: -1,\n };\n // Where the find algorithm currently is in the document.\n this._offset = {\n pageIdx: null,\n matchIdx: null,\n wrapped: false,\n };\n this._extractTextPromises = [];\n this._pageContents = []; // Stores the normalized text for each page.\n this._pageDiffs = [];\n this._hasDiacritics = [];\n this._matchesCountTotal = 0;\n this._pagesToSearch = null;\n this._pendingFindMatches = new Set();\n this._resumePageIdx = null;\n this._dirtyMatch = false;\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n\n this._firstPageCapability = createPromiseCapability();\n }\n\n /**\n * @type {string} The (current) normalized search query.\n */\n get _query() {\n if (this._state.query !== this._rawQuery) {\n this._rawQuery = this._state.query;\n [this._normalizedQuery] = normalize(this._state.query);\n }\n return this._normalizedQuery;\n }\n\n _shouldDirtyMatch(state) {\n // When the search query changes, regardless of the actual search command\n // used, always re-calculate matches to avoid errors (fixes bug 1030622).\n if (state.query !== this._state.query) {\n return true;\n }\n switch (state.type) {\n case \"again\":\n const pageNumber = this._selected.pageIdx + 1;\n const linkService = this._linkService;\n // Only treat a 'findagain' event as a new search operation when it's\n // *absolutely* certain that the currently selected match is no longer\n // visible, e.g. as a result of the user scrolling in the document.\n //\n // NOTE: If only a simple `this._linkService.page` check was used here,\n // there's a risk that consecutive 'findagain' operations could \"skip\"\n // over matches at the top/bottom of pages thus making them completely\n // inaccessible when there's multiple pages visible in the viewer.\n if (\n pageNumber >= 1 &&\n pageNumber <= linkService.pagesCount &&\n pageNumber !== linkService.page &&\n !linkService.isPageVisible(pageNumber)\n ) {\n return true;\n }\n return false;\n case \"highlightallchange\":\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the search query constitutes a \"whole word\", by comparing the\n * first/last character type with the preceding/following character type.\n */\n _isEntireWord(content, startIdx, length) {\n let match = content\n .slice(0, startIdx)\n .match(NOT_DIACRITIC_FROM_END_REG_EXP);\n if (match) {\n const first = content.charCodeAt(startIdx);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(first) === getCharacterType(limit)) {\n return false;\n }\n }\n\n match = content\n .slice(startIdx + length)\n .match(NOT_DIACRITIC_FROM_START_REG_EXP);\n if (match) {\n const last = content.charCodeAt(startIdx + length - 1);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(last) === getCharacterType(limit)) {\n return false;\n }\n }\n\n return true;\n }\n\n _calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {\n const matches = [],\n matchesLength = [];\n\n const diffs = this._pageDiffs[pageIndex];\n let match;\n while ((match = query.exec(pageContent)) !== null) {\n if (\n entireWord &&\n !this._isEntireWord(pageContent, match.index, match[0].length)\n ) {\n continue;\n }\n\n const [matchPos, matchLen] = getOriginalIndex(\n diffs,\n match.index,\n match[0].length\n );\n\n if (matchLen) {\n matches.push(matchPos);\n matchesLength.push(matchLen);\n }\n }\n this._pageMatches[pageIndex] = matches;\n this._pageMatchesLength[pageIndex] = matchesLength;\n }\n\n _convertToRegExpString(query, hasDiacritics) {\n const { matchDiacritics } = this._state;\n let isUnicode = false;\n query = query.replace(\n SPECIAL_CHARS_REG_EXP,\n (\n match,\n p1 /* to escape */,\n p2 /* punctuation */,\n p3 /* whitespaces */,\n p4 /* diacritics */,\n p5 /* letters */\n ) => {\n // We don't need to use a \\s for whitespaces since all the different\n // kind of whitespaces are replaced by a single \" \".\n\n if (p1) {\n // Escape characters like *+?... to not interfer with regexp syntax.\n return `[ ]*\\\\${p1}[ ]*`;\n }\n if (p2) {\n // Allow whitespaces around punctuation signs.\n return `[ ]*${p2}[ ]*`;\n }\n if (p3) {\n // Replace spaces by \\s+ to be sure to match any spaces.\n return \"[ ]+\";\n }\n if (matchDiacritics) {\n return p4 || p5;\n }\n\n if (p4) {\n // Diacritics are removed with few exceptions.\n return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : \"\";\n }\n\n // A letter has been matched and it can be followed by any diacritics\n // in normalized text.\n if (hasDiacritics) {\n isUnicode = true;\n return `${p5}\\\\p{M}*`;\n }\n return p5;\n }\n );\n\n const trailingSpaces = \"[ ]*\";\n if (query.endsWith(trailingSpaces)) {\n // The [ ]* has been added in order to help to match \"foo . bar\" but\n // it doesn't make sense to match some whitespaces after the dot\n // when it's the last character.\n query = query.slice(0, query.length - trailingSpaces.length);\n }\n\n if (matchDiacritics) {\n // aX must not match aXY.\n if (hasDiacritics) {\n isUnicode = true;\n query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\\\p{M}]|$)`;\n }\n }\n\n return [isUnicode, query];\n }\n\n _calculateMatch(pageIndex) {\n let query = this._query;\n if (query.length === 0) {\n // Do nothing: the matches should be wiped out already.\n return;\n }\n\n const { caseSensitive, entireWord, phraseSearch } = this._state;\n const pageContent = this._pageContents[pageIndex];\n const hasDiacritics = this._hasDiacritics[pageIndex];\n\n let isUnicode = false;\n if (phraseSearch) {\n [isUnicode, query] = this._convertToRegExpString(query, hasDiacritics);\n } else {\n // Words are sorted in reverse order to be sure that \"foobar\" is matched\n // before \"foo\" in case the query is \"foobar foo\".\n const match = query.match(/\\S+/g);\n if (match) {\n query = match\n .sort()\n .reverse()\n .map(q => {\n const [isUnicodePart, queryPart] = this._convertToRegExpString(\n q,\n hasDiacritics\n );\n isUnicode ||= isUnicodePart;\n return `(${queryPart})`;\n })\n .join(\"|\");\n }\n }\n\n const flags = `g${isUnicode ? \"u\" : \"\"}${caseSensitive ? \"\" : \"i\"}`;\n query = new RegExp(query, flags);\n\n this._calculateRegExpMatch(query, entireWord, pageIndex, pageContent);\n\n // When `highlightAll` is set, ensure that the matches on previously\n // rendered (and still active) pages are correctly highlighted.\n if (this._state.highlightAll) {\n this._updatePage(pageIndex);\n }\n if (this._resumePageIdx === pageIndex) {\n this._resumePageIdx = null;\n this._nextPageMatch();\n }\n\n // Update the match count.\n const pageMatchesCount = this._pageMatches[pageIndex].length;\n if (pageMatchesCount > 0) {\n this._matchesCountTotal += pageMatchesCount;\n this._updateUIResultsCount();\n }\n }\n\n _extractText() {\n // Perform text extraction once if this method is called multiple times.\n if (this._extractTextPromises.length > 0) {\n return;\n }\n\n let promise = Promise.resolve();\n for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n const extractTextCapability = createPromiseCapability();\n this._extractTextPromises[i] = extractTextCapability.promise;\n\n promise = promise.then(() => {\n return this._pdfDocument\n .getPage(i + 1)\n .then(pdfPage => {\n return pdfPage.getTextContent();\n })\n .then(\n textContent => {\n const textItems = textContent.items;\n const strBuf = [];\n\n for (let j = 0, jj = textItems.length; j < jj; j++) {\n strBuf.push(textItems[j].str);\n if (textItems[j].hasEOL) {\n strBuf.push(\"\\n\");\n }\n }\n\n // Store the normalized page content (text items) as one string.\n [\n this._pageContents[i],\n this._pageDiffs[i],\n this._hasDiacritics[i],\n ] = normalize(strBuf.join(\"\"));\n extractTextCapability.resolve(i);\n },\n reason => {\n console.error(\n `Unable to get text content for page ${i + 1}`,\n reason\n );\n // Page error -- assuming no text content.\n this._pageContents[i] = \"\";\n this._pageDiffs[i] = null;\n this._hasDiacritics[i] = false;\n extractTextCapability.resolve(i);\n }\n );\n });\n }\n }\n\n _updatePage(index) {\n if (this._scrollMatches && this._selected.pageIdx === index) {\n // If the page is selected, scroll the page into view, which triggers\n // rendering the page, which adds the text layer. Once the text layer\n // is built, it will attempt to scroll the selected match into view.\n this._linkService.page = index + 1;\n }\n\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: index,\n });\n }\n\n _updateAllPages() {\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: -1,\n });\n }\n\n _nextMatch() {\n const previous = this._state.findPrevious;\n const currentPageIndex = this._linkService.page - 1;\n const numPages = this._linkService.pagesCount;\n\n this._highlightMatches = true;\n\n if (this._dirtyMatch) {\n // Need to recalculate the matches, reset everything.\n this._dirtyMatch = false;\n this._selected.pageIdx = this._selected.matchIdx = -1;\n this._offset.pageIdx = currentPageIndex;\n this._offset.matchIdx = null;\n this._offset.wrapped = false;\n this._resumePageIdx = null;\n this._pageMatches.length = 0;\n this._pageMatchesLength.length = 0;\n this._matchesCountTotal = 0;\n\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n\n for (let i = 0; i < numPages; i++) {\n // Start finding the matches as soon as the text is extracted.\n if (this._pendingFindMatches.has(i)) {\n continue;\n }\n this._pendingFindMatches.add(i);\n this._extractTextPromises[i].then(pageIdx => {\n this._pendingFindMatches.delete(pageIdx);\n this._calculateMatch(pageIdx);\n });\n }\n }\n\n // If there's no query there's no point in searching.\n if (this._query === \"\") {\n this._updateUIState(FindState.FOUND);\n return;\n }\n // If we're waiting on a page, we return since we can't do anything else.\n if (this._resumePageIdx) {\n return;\n }\n\n const offset = this._offset;\n // Keep track of how many pages we should maximally iterate through.\n this._pagesToSearch = numPages;\n // If there's already a `matchIdx` that means we are iterating through a\n // page's matches.\n if (offset.matchIdx !== null) {\n const numPageMatches = this._pageMatches[offset.pageIdx].length;\n if (\n (!previous && offset.matchIdx + 1 < numPageMatches) ||\n (previous && offset.matchIdx > 0)\n ) {\n // The simple case; we just have advance the matchIdx to select\n // the next match on the page.\n offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n this._updateMatch(/* found = */ true);\n return;\n }\n // We went beyond the current page's matches, so we advance to\n // the next page.\n this._advanceOffsetPage(previous);\n }\n // Start searching through the page.\n this._nextPageMatch();\n }\n\n _matchesReady(matches) {\n const offset = this._offset;\n const numMatches = matches.length;\n const previous = this._state.findPrevious;\n\n if (numMatches) {\n // There were matches for the page, so initialize `matchIdx`.\n offset.matchIdx = previous ? numMatches - 1 : 0;\n this._updateMatch(/* found = */ true);\n return true;\n }\n // No matches, so attempt to search the next page.\n this._advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this._pagesToSearch < 0) {\n // No point in wrapping again, there were no matches.\n this._updateMatch(/* found = */ false);\n // While matches were not found, searching for a page\n // with matches should nevertheless halt.\n return true;\n }\n }\n // Matches were not found (and searching is not done).\n return false;\n }\n\n _nextPageMatch() {\n if (this._resumePageIdx !== null) {\n console.error(\"There can only be one pending page.\");\n }\n\n let matches = null;\n do {\n const pageIdx = this._offset.pageIdx;\n matches = this._pageMatches[pageIdx];\n if (!matches) {\n // The matches don't exist yet for processing by `_matchesReady`,\n // so set a resume point for when they do exist.\n this._resumePageIdx = pageIdx;\n break;\n }\n } while (!this._matchesReady(matches));\n }\n\n _advanceOffsetPage(previous) {\n const offset = this._offset;\n const numPages = this._linkService.pagesCount;\n offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n offset.matchIdx = null;\n\n this._pagesToSearch--;\n\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = previous ? numPages - 1 : 0;\n offset.wrapped = true;\n }\n }\n\n _updateMatch(found = false) {\n let state = FindState.NOT_FOUND;\n const wrapped = this._offset.wrapped;\n this._offset.wrapped = false;\n\n if (found) {\n const previousPage = this._selected.pageIdx;\n this._selected.pageIdx = this._offset.pageIdx;\n this._selected.matchIdx = this._offset.matchIdx;\n state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n\n // Update the currently selected page to wipe out any selected matches.\n if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n this._updatePage(previousPage);\n }\n }\n\n this._updateUIState(state, this._state.findPrevious);\n if (this._selected.pageIdx !== -1) {\n // Ensure that the match will be scrolled into view.\n this._scrollMatches = true;\n\n this._updatePage(this._selected.pageIdx);\n }\n }\n\n _onFindBarClose(evt) {\n const pdfDocument = this._pdfDocument;\n // Since searching is asynchronous, ensure that the removal of highlighted\n // matches (from the UI) is async too such that the 'updatetextlayermatches'\n // events will always be dispatched in the expected order.\n this._firstPageCapability.promise.then(() => {\n // Only update the UI if the document is open, and is the current one.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n // Ensure that a pending, not yet started, search operation is aborted.\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n // Abort any long running searches, to avoid a match being scrolled into\n // view *after* the findbar has been closed. In this case `this._offset`\n // will most likely differ from `this._selected`, hence we also ensure\n // that any new search operation will always start with a clean slate.\n if (this._resumePageIdx) {\n this._resumePageIdx = null;\n this._dirtyMatch = true;\n }\n // Avoid the UI being in a pending state when the findbar is re-opened.\n this._updateUIState(FindState.FOUND);\n\n this._highlightMatches = false;\n this._updateAllPages(); // Wipe out any previously highlighted matches.\n });\n }\n\n _requestMatchesCount() {\n const { pageIdx, matchIdx } = this._selected;\n let current = 0,\n total = this._matchesCountTotal;\n if (matchIdx !== -1) {\n for (let i = 0; i < pageIdx; i++) {\n current += this._pageMatches[i]?.length || 0;\n }\n current += matchIdx + 1;\n }\n // When searching starts, this method may be called before the `pageMatches`\n // have been counted (in `_calculateMatch`). Ensure that the UI won't show\n // temporarily broken state when the active find result doesn't make sense.\n if (current < 1 || current > total) {\n current = total = 0;\n }\n return { current, total };\n }\n\n _updateUIResultsCount() {\n this._eventBus.dispatch(\"updatefindmatchescount\", {\n source: this,\n matchesCount: this._requestMatchesCount(),\n });\n }\n\n _updateUIState(state, previous = false) {\n this._eventBus.dispatch(\"updatefindcontrolstate\", {\n source: this,\n state,\n previous,\n matchesCount: this._requestMatchesCount(),\n rawQuery: this._state?.query ?? null,\n });\n }\n}\n\nexport { FindState, PDFFindController };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CharacterType = {\n SPACE: 0,\n ALPHA_LETTER: 1,\n PUNCT: 2,\n HAN_LETTER: 3,\n KATAKANA_LETTER: 4,\n HIRAGANA_LETTER: 5,\n HALFWIDTH_KATAKANA_LETTER: 6,\n THAI_LETTER: 7,\n};\n\nfunction isAlphabeticalScript(charCode) {\n return charCode < 0x2e80;\n}\n\nfunction isAscii(charCode) {\n return (charCode & 0xff80) === 0;\n}\n\nfunction isAsciiAlpha(charCode) {\n return (\n (charCode >= /* a = */ 0x61 && charCode <= /* z = */ 0x7a) ||\n (charCode >= /* A = */ 0x41 && charCode <= /* Z = */ 0x5a)\n );\n}\n\nfunction isAsciiDigit(charCode) {\n return charCode >= /* 0 = */ 0x30 && charCode <= /* 9 = */ 0x39;\n}\n\nfunction isAsciiSpace(charCode) {\n return (\n charCode === /* SPACE = */ 0x20 ||\n charCode === /* TAB = */ 0x09 ||\n charCode === /* CR = */ 0x0d ||\n charCode === /* LF = */ 0x0a\n );\n}\n\nfunction isHan(charCode) {\n return (\n (charCode >= 0x3400 && charCode <= 0x9fff) ||\n (charCode >= 0xf900 && charCode <= 0xfaff)\n );\n}\n\nfunction isKatakana(charCode) {\n return charCode >= 0x30a0 && charCode <= 0x30ff;\n}\n\nfunction isHiragana(charCode) {\n return charCode >= 0x3040 && charCode <= 0x309f;\n}\n\nfunction isHalfwidthKatakana(charCode) {\n return charCode >= 0xff60 && charCode <= 0xff9f;\n}\n\nfunction isThai(charCode) {\n return (charCode & 0xff80) === 0x0e00;\n}\n\n/**\n * This function is based on the word-break detection implemented in:\n * https://hg.mozilla.org/mozilla-central/file/tip/intl/lwbrk/WordBreaker.cpp\n */\nfunction getCharacterType(charCode) {\n if (isAlphabeticalScript(charCode)) {\n if (isAscii(charCode)) {\n if (isAsciiSpace(charCode)) {\n return CharacterType.SPACE;\n } else if (\n isAsciiAlpha(charCode) ||\n isAsciiDigit(charCode) ||\n charCode === /* UNDERSCORE = */ 0x5f\n ) {\n return CharacterType.ALPHA_LETTER;\n }\n return CharacterType.PUNCT;\n } else if (isThai(charCode)) {\n return CharacterType.THAI_LETTER;\n } else if (charCode === /* NBSP = */ 0xa0) {\n return CharacterType.SPACE;\n }\n return CharacterType.ALPHA_LETTER;\n }\n\n if (isHan(charCode)) {\n return CharacterType.HAN_LETTER;\n } else if (isKatakana(charCode)) {\n return CharacterType.KATAKANA_LETTER;\n } else if (isHiragana(charCode)) {\n return CharacterType.HIRAGANA_LETTER;\n } else if (isHalfwidthKatakana(charCode)) {\n return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n }\n return CharacterType.ALPHA_LETTER;\n}\n\nexport { CharacterType, getCharacterType };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n isValidRotation,\n parseQueryString,\n PresentationModeState,\n} from \"./ui_utils.js\";\nimport { waitOnEventOrTimeout } from \"./event_utils.js\";\n\n// Heuristic value used when force-resetting `this._blockHashChange`.\nconst HASH_CHANGE_TIMEOUT = 1000; // milliseconds\n// Heuristic value used when adding the current position to the browser history.\nconst POSITION_UPDATED_THRESHOLD = 50;\n// Heuristic value used when adding a temporary position to the browser history.\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; // milliseconds\n\n/**\n * @typedef {Object} PDFHistoryOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} InitializeParameters\n * @property {string} fingerprint - The PDF document's unique fingerprint.\n * @property {boolean} [resetHistory] - Reset the browsing history.\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\n * the current hash, when pushing/replacing browser history entries.\n */\n\n/**\n * @typedef {Object} PushParameters\n * @property {string} [namedDest] - The named destination. If absent, a\n * stringified version of `explicitDest` is used.\n * @property {Array} explicitDest - The explicit destination array.\n * @property {number} pageNumber - The page to which the destination points.\n */\n\nfunction getCurrentHash() {\n return document.location.hash;\n}\n\nclass PDFHistory {\n /**\n * @param {PDFHistoryOptions} options\n */\n constructor({ linkService, eventBus }) {\n this.linkService = linkService;\n this.eventBus = eventBus;\n\n this._initialized = false;\n this._fingerprint = \"\";\n this.reset();\n\n this._boundEvents = null;\n this._isViewerInPresentationMode = false;\n // Ensure that we don't miss either a 'presentationmodechanged' or a\n // 'pagesinit' event, by registering the listeners immediately.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n this._isViewerInPresentationMode =\n evt.state !== PresentationModeState.NORMAL;\n });\n this.eventBus._on(\"pagesinit\", () => {\n this._isPagesLoaded = false;\n\n this.eventBus._on(\n \"pagesloaded\",\n evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n },\n { once: true }\n );\n });\n }\n\n /**\n * Initialize the history for the PDF document, using either the current\n * browser history entry or the document hash, whichever is present.\n * @param {InitializeParameters} params\n */\n initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\n if (!fingerprint || typeof fingerprint !== \"string\") {\n console.error(\n 'PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.'\n );\n return;\n }\n // Ensure that any old state is always reset upon initialization.\n if (this._initialized) {\n this.reset();\n }\n const reInitialized =\n this._fingerprint !== \"\" && this._fingerprint !== fingerprint;\n this._fingerprint = fingerprint;\n this._updateUrl = updateUrl === true;\n\n this._initialized = true;\n this._bindEvents();\n const state = window.history.state;\n\n this._popStateInProgress = false;\n this._blockHashChange = 0;\n this._currentHash = getCurrentHash();\n this._numPositionUpdates = 0;\n\n this._uid = this._maxUid = 0;\n this._destination = null;\n this._position = null;\n\n if (!this._isValidState(state, /* checkReload = */ true) || resetHistory) {\n const { hash, page, rotation } = this._parseCurrentHash(\n /* checkNameddest = */ true\n );\n\n if (!hash || reInitialized || resetHistory) {\n // Ensure that the browser history is reset on PDF document load.\n this._pushOrReplaceState(null, /* forceReplace = */ true);\n return;\n }\n // Ensure that the browser history is initialized correctly when\n // the document hash is present on PDF document load.\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n\n // The browser history contains a valid entry, ensure that the history is\n // initialized correctly on PDF document load.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (destination.rotation !== undefined) {\n this._initialRotation = destination.rotation;\n }\n if (destination.dest) {\n this._initialBookmark = JSON.stringify(destination.dest);\n\n // If the history is updated, e.g. through the user changing the hash,\n // before the initial destination has become visible, then we do *not*\n // want to potentially add `this._position` to the browser history.\n this._destination.page = null;\n } else if (destination.hash) {\n this._initialBookmark = destination.hash;\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this._initialBookmark = `page=${destination.page}`;\n }\n }\n\n /**\n * Reset the current `PDFHistory` instance, and consequently prevent any\n * further updates and/or navigation of the browser history.\n */\n reset() {\n if (this._initialized) {\n this._pageHide(); // Simulate a 'pagehide' event when resetting.\n\n this._initialized = false;\n this._unbindEvents();\n }\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n this._initialBookmark = null;\n this._initialRotation = null;\n }\n\n /**\n * Push an internal destination to the browser history.\n * @param {PushParameters}\n */\n push({ namedDest = null, explicitDest, pageNumber }) {\n if (!this._initialized) {\n return;\n }\n if (namedDest && typeof namedDest !== \"string\") {\n console.error(\n \"PDFHistory.push: \" +\n `\"${namedDest}\" is not a valid namedDest parameter.`\n );\n return;\n } else if (!Array.isArray(explicitDest)) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${explicitDest}\" is not a valid explicitDest parameter.`\n );\n return;\n } else if (!this._isValidPage(pageNumber)) {\n // Allow an unset `pageNumber` if and only if the history is still empty;\n // please refer to the `this._destination.page = null;` comment above.\n if (pageNumber !== null || this._destination) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n }\n\n const hash = namedDest || JSON.stringify(explicitDest);\n if (!hash) {\n // The hash *should* never be undefined, but if that were to occur,\n // avoid any possible issues by not updating the browser history.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination &&\n (isDestHashesEqual(this._destination.hash, hash) ||\n isDestArraysEqual(this._destination.dest, explicitDest))\n ) {\n // When the new destination is identical to `this._destination`, and\n // its `page` is undefined, replace the current browser history entry.\n // NOTE: This can only occur if `this._destination` was set either:\n // - through the document hash being specified on load.\n // - through the user changing the hash of the document.\n if (this._destination.page) {\n return;\n }\n forceReplace = true;\n }\n if (this._popStateInProgress && !forceReplace) {\n return;\n }\n\n this._pushOrReplaceState(\n {\n dest: explicitDest,\n hash,\n page: pageNumber,\n rotation: this.linkService.rotation,\n },\n forceReplace\n );\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new destination is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new destination is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push a page to the browser history; generally the `push` method should be\n * used instead.\n * @param {number} pageNumber\n */\n pushPage(pageNumber) {\n if (!this._initialized) {\n return;\n }\n if (!this._isValidPage(pageNumber)) {\n console.error(\n `PDFHistory.pushPage: \"${pageNumber}\" is not a valid page number.`\n );\n return;\n }\n\n if (this._destination?.page === pageNumber) {\n // When the new page is identical to the one in `this._destination`, we\n // don't want to add a potential duplicate entry in the browser history.\n return;\n }\n if (this._popStateInProgress) {\n return;\n }\n\n this._pushOrReplaceState({\n // Simulate an internal destination, for `this._tryPushCurrentPosition`:\n dest: null,\n hash: `page=${pageNumber}`,\n page: pageNumber,\n rotation: this.linkService.rotation,\n });\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new page is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new page is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push the current position to the browser history.\n */\n pushCurrentPosition() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n this._tryPushCurrentPosition();\n }\n\n /**\n * Go back one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n back() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid > 0) {\n window.history.back();\n }\n }\n\n /**\n * Go forward one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n forward() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid < this._maxUid) {\n window.history.forward();\n }\n }\n\n /**\n * @type {boolean} Indicating if the user is currently moving through the\n * browser history, useful e.g. for skipping the next 'hashchange' event.\n */\n get popStateInProgress() {\n return (\n this._initialized &&\n (this._popStateInProgress || this._blockHashChange > 0)\n );\n }\n\n get initialBookmark() {\n return this._initialized ? this._initialBookmark : null;\n }\n\n get initialRotation() {\n return this._initialized ? this._initialRotation : null;\n }\n\n /**\n * @private\n */\n _pushOrReplaceState(destination, forceReplace = false) {\n const shouldReplace = forceReplace || !this._destination;\n const newState = {\n fingerprint: this._fingerprint,\n uid: shouldReplace ? this._uid : this._uid + 1,\n destination,\n };\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n window.history.state?.chromecomState\n ) {\n // history.state.chromecomState is managed by chromecom.js.\n newState.chromecomState = window.history.state.chromecomState;\n }\n this._updateInternalState(destination, newState.uid);\n\n let newUrl;\n if (this._updateUrl && destination?.hash) {\n const baseUrl = document.location.href.split(\"#\")[0];\n // Prevent errors in Firefox.\n if (!baseUrl.startsWith(\"file://\")) {\n newUrl = `${baseUrl}#${destination.hash}`;\n }\n }\n if (shouldReplace) {\n window.history.replaceState(newState, \"\", newUrl);\n } else {\n window.history.pushState(newState, \"\", newUrl);\n }\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n top === window\n ) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n }\n\n /**\n * @private\n */\n _tryPushCurrentPosition(temporary = false) {\n if (!this._position) {\n return;\n }\n let position = this._position;\n if (temporary) {\n position = Object.assign(Object.create(null), this._position);\n position.temporary = true;\n }\n\n if (!this._destination) {\n this._pushOrReplaceState(position);\n return;\n }\n if (this._destination.temporary) {\n // Always replace a previous *temporary* position.\n this._pushOrReplaceState(position, /* forceReplace = */ true);\n return;\n }\n if (this._destination.hash === position.hash) {\n return; // The current document position has not changed.\n }\n if (\n !this._destination.page &&\n (POSITION_UPDATED_THRESHOLD <= 0 ||\n this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)\n ) {\n // `this._destination` was set through the user changing the hash of\n // the document. Do not add `this._position` to the browser history,\n // to avoid \"flooding\" it with lots of (nearly) identical entries,\n // since we cannot ensure that the document position has changed.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination.page >= position.first &&\n this._destination.page <= position.page\n ) {\n // When the `page` of `this._destination` is still visible, do not\n // update the browsing history when `this._destination` either:\n // - contains an internal destination, since in this case we\n // cannot ensure that the document position has actually changed.\n // - was set through the user changing the hash of the document.\n if (this._destination.dest !== undefined || !this._destination.first) {\n return;\n }\n // To avoid \"flooding\" the browser history, replace the current entry.\n forceReplace = true;\n }\n this._pushOrReplaceState(position, forceReplace);\n }\n\n /**\n * @private\n */\n _isValidPage(val) {\n return (\n Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount\n );\n }\n\n /**\n * @private\n */\n _isValidState(state, checkReload = false) {\n if (!state) {\n return false;\n }\n if (state.fingerprint !== this._fingerprint) {\n if (checkReload) {\n // Potentially accept the history entry, even if the fingerprints don't\n // match, when the viewer was reloaded (see issue 6847).\n if (\n typeof state.fingerprint !== \"string\" ||\n state.fingerprint.length !== this._fingerprint.length\n ) {\n return false;\n }\n const [perfEntry] = performance.getEntriesByType(\"navigation\");\n if (perfEntry?.type !== \"reload\") {\n return false;\n }\n } else {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return false;\n }\n }\n if (!Number.isInteger(state.uid) || state.uid < 0) {\n return false;\n }\n if (state.destination === null || typeof state.destination !== \"object\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n */\n _updateInternalState(destination, uid, removeTemporary = false) {\n if (this._updateViewareaTimeout) {\n // When updating `this._destination`, make sure that we always wait for\n // the next 'updateviewarea' event before (potentially) attempting to\n // push the current position to the browser history.\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n if (removeTemporary && destination?.temporary) {\n // When the `destination` comes from the browser history,\n // we no longer treat it as a *temporary* position.\n delete destination.temporary;\n }\n this._destination = destination;\n this._uid = uid;\n this._maxUid = Math.max(this._maxUid, uid);\n // This should always be reset when `this._destination` is updated.\n this._numPositionUpdates = 0;\n }\n\n /**\n * @private\n */\n _parseCurrentHash(checkNameddest = false) {\n const hash = unescape(getCurrentHash()).substring(1);\n const params = parseQueryString(hash);\n\n const nameddest = params.get(\"nameddest\") || \"\";\n let page = params.get(\"page\") | 0;\n\n if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\n page = null;\n }\n return { hash, page, rotation: this.linkService.rotation };\n }\n\n /**\n * @private\n */\n _updateViewarea({ location }) {\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n\n this._position = {\n hash: this._isViewerInPresentationMode\n ? `page=${location.pageNumber}`\n : location.pdfOpenParams.substring(1),\n page: this.linkService.page,\n first: location.pageNumber,\n rotation: location.rotation,\n };\n\n if (this._popStateInProgress) {\n return;\n }\n\n if (\n POSITION_UPDATED_THRESHOLD > 0 &&\n this._isPagesLoaded &&\n this._destination &&\n !this._destination.page\n ) {\n // If the current destination was set through the user changing the hash\n // of the document, we will usually not try to push the current position\n // to the browser history; see `this._tryPushCurrentPosition()`.\n //\n // To prevent `this._tryPushCurrentPosition()` from effectively being\n // reduced to a no-op in this case, we will assume that the position\n // *did* in fact change if the 'updateviewarea' event was dispatched\n // more than `POSITION_UPDATED_THRESHOLD` times.\n this._numPositionUpdates++;\n }\n\n if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n // When closing the browser, a 'pagehide' event will be dispatched which\n // *should* allow us to push the current position to the browser history.\n // In practice, it seems that the event is arriving too late in order for\n // the session history to be successfully updated.\n // (For additional details, please refer to the discussion in\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1153393.)\n //\n // To workaround this we attempt to *temporarily* add the current position\n // to the browser history only when the viewer is *idle*,\n // i.e. when scrolling and/or zooming does not occur.\n //\n // PLEASE NOTE: It's absolutely imperative that the browser history is\n // *not* updated too often, since that would render the viewer more or\n // less unusable. Hence the use of a timeout to delay the update until\n // the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\n this._updateViewareaTimeout = setTimeout(() => {\n if (!this._popStateInProgress) {\n this._tryPushCurrentPosition(/* temporary = */ true);\n }\n this._updateViewareaTimeout = null;\n }, UPDATE_VIEWAREA_TIMEOUT);\n }\n }\n\n /**\n * @private\n */\n _popState({ state }) {\n const newHash = getCurrentHash(),\n hashChanged = this._currentHash !== newHash;\n this._currentHash = newHash;\n\n if (\n (typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n state?.chromecomState &&\n !this._isValidState(state)) ||\n !state\n ) {\n // This case corresponds to the user changing the hash of the document.\n this._uid++;\n\n const { hash, page, rotation } = this._parseCurrentHash();\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n if (!this._isValidState(state)) {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return;\n }\n\n // Prevent the browser history from updating until the new destination,\n // as stored in the browser history, has been scrolled into view.\n this._popStateInProgress = true;\n\n if (hashChanged) {\n // When the hash changed, implying that the 'popstate' event will be\n // followed by a 'hashchange' event, then we do *not* want to update the\n // browser history when handling the 'hashchange' event (in web/app.js)\n // since that would *overwrite* the new destination navigated to below.\n //\n // To avoid accidentally disabling all future user-initiated hash changes,\n // if there's e.g. another 'hashchange' listener that stops the event\n // propagation, we make sure to always force-reset `this._blockHashChange`\n // after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\n this._blockHashChange++;\n waitOnEventOrTimeout({\n target: window,\n name: \"hashchange\",\n delay: HASH_CHANGE_TIMEOUT,\n }).then(() => {\n this._blockHashChange--;\n });\n }\n\n // Navigate to the new destination.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (isValidRotation(destination.rotation)) {\n this.linkService.rotation = destination.rotation;\n }\n if (destination.dest) {\n this.linkService.goToDestination(destination.dest);\n } else if (destination.hash) {\n this.linkService.setHash(destination.hash);\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this.linkService.page = destination.page;\n }\n\n // Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\n // resetting of `this._popStateInProgress` slightly.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n\n /**\n * @private\n */\n _pageHide() {\n // Attempt to push the `this._position` into the browser history when\n // navigating away from the document. This is *only* done if the history\n // is empty/temporary, since otherwise an existing browser history entry\n // will end up being overwritten (given that new entries cannot be pushed\n // into the browser history when the 'unload' event has already fired).\n if (!this._destination || this._destination.temporary) {\n this._tryPushCurrentPosition();\n }\n }\n\n /**\n * @private\n */\n _bindEvents() {\n if (this._boundEvents) {\n return; // The event listeners were already added.\n }\n this._boundEvents = {\n updateViewarea: this._updateViewarea.bind(this),\n popState: this._popState.bind(this),\n pageHide: this._pageHide.bind(this),\n };\n\n this.eventBus._on(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.addEventListener(\"popstate\", this._boundEvents.popState);\n window.addEventListener(\"pagehide\", this._boundEvents.pageHide);\n }\n\n /**\n * @private\n */\n _unbindEvents() {\n if (!this._boundEvents) {\n return; // The event listeners were already removed.\n }\n this.eventBus._off(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.removeEventListener(\"popstate\", this._boundEvents.popState);\n window.removeEventListener(\"pagehide\", this._boundEvents.pageHide);\n\n this._boundEvents = null;\n }\n}\n\nfunction isDestHashesEqual(destHash, pushHash) {\n if (typeof destHash !== \"string\" || typeof pushHash !== \"string\") {\n return false;\n }\n if (destHash === pushHash) {\n return true;\n }\n const nameddest = parseQueryString(destHash).get(\"nameddest\");\n if (nameddest === pushHash) {\n return true;\n }\n return false;\n}\n\nfunction isDestArraysEqual(firstDest, secondDest) {\n function isEntryEqual(first, second) {\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) || Array.isArray(second)) {\n return false;\n }\n if (first !== null && typeof first === \"object\" && second !== null) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (const key in first) {\n if (!isEntryEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n }\n return first === second || (Number.isNaN(first) && Number.isNaN(second));\n }\n\n if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n return false;\n }\n if (firstDest.length !== secondDest.length) {\n return false;\n }\n for (let i = 0, ii = firstDest.length; i < ii; i++) {\n if (!isEntryEqual(firstDest[i], secondDest[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFLayerViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * @typedef {Object} PDFLayerViewerRenderParameters\n * @property {OptionalContentConfig|null} optionalContentConfig - An\n * {OptionalContentConfig} instance.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFLayerViewer extends BaseTreeViewer {\n constructor(options) {\n super(options);\n this.l10n = options.l10n;\n\n this.eventBus._on(\"resetlayers\", this._resetLayers.bind(this));\n this.eventBus._on(\"togglelayerstree\", this._toggleAllTreeItems.bind(this));\n }\n\n reset() {\n super.reset();\n this._optionalContentConfig = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(layersCount) {\n this.eventBus.dispatch(\"layersloaded\", {\n source: this,\n layersCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { groupId, input }) {\n const setVisibility = () => {\n this._optionalContentConfig.setVisibility(groupId, input.checked);\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(this._optionalContentConfig),\n });\n };\n\n element.onclick = evt => {\n if (evt.target === input) {\n setVisibility();\n return true;\n } else if (evt.target !== element) {\n return true; // The target is the \"label\", which is handled above.\n }\n input.checked = !input.checked;\n setVisibility();\n return false;\n };\n }\n\n /**\n * @private\n */\n async _setNestedName(element, { name = null }) {\n if (typeof name === \"string\") {\n element.textContent = this._normalizeTextContent(name);\n return;\n }\n element.textContent = await this.l10n.get(\"additional_layers\");\n element.style.fontStyle = \"italic\";\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { name = null }) {\n super._addToggleButton(div, /* hidden = */ name === null);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._optionalContentConfig) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFLayerViewerRenderParameters} params\n */\n render({ optionalContentConfig, pdfDocument }) {\n if (this._optionalContentConfig) {\n this.reset();\n }\n this._optionalContentConfig = optionalContentConfig || null;\n this._pdfDocument = pdfDocument || null;\n\n const groups = optionalContentConfig?.getOrder();\n if (!groups) {\n this._dispatchEvent(/* layersCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment(),\n queue = [{ parent: fragment, groups }];\n let layersCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const groupId of levelData.groups) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n div.appendChild(element);\n\n if (typeof groupId === \"object\") {\n hasAnyNesting = true;\n this._addToggleButton(div, groupId);\n this._setNestedName(element, groupId);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, groups: groupId.order });\n } else {\n const group = optionalContentConfig.getGroup(groupId);\n\n const input = document.createElement(\"input\");\n this._bindLink(element, { groupId, input });\n input.type = \"checkbox\";\n input.id = groupId;\n input.checked = group.visible;\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", groupId);\n label.textContent = this._normalizeTextContent(group.name);\n\n element.appendChild(input);\n element.appendChild(label);\n\n layersCount++;\n }\n\n levelData.parent.appendChild(div);\n }\n }\n\n this._finishRendering(fragment, layersCount, hasAnyNesting);\n }\n\n /**\n * @private\n */\n async _resetLayers() {\n if (!this._optionalContentConfig) {\n return;\n }\n // Fetch the default optional content configuration...\n const optionalContentConfig =\n await this._pdfDocument.getOptionalContentConfig();\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(optionalContentConfig),\n });\n\n // ... and reset the sidebarView to the default state.\n this.render({\n optionalContentConfig,\n pdfDocument: this._pdfDocument,\n });\n }\n}\n\nexport { PDFLayerViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { SidebarView } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} PDFOutlineViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} PDFOutlineViewerRenderParameters\n * @property {Array|null} outline - An array of outline objects.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFOutlineViewer extends BaseTreeViewer {\n /**\n * @param {PDFOutlineViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.linkService = options.linkService;\n\n this.eventBus._on(\"toggleoutlinetree\", this._toggleAllTreeItems.bind(this));\n this.eventBus._on(\n \"currentoutlineitem\",\n this._currentOutlineItem.bind(this)\n );\n\n this.eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n this.eventBus._on(\"pagesloaded\", evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n\n // If the capability is still pending, see the `_dispatchEvent`-method,\n // we know that the `currentOutlineItem`-button can be enabled here.\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n });\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this._sidebarView = evt.view;\n });\n }\n\n reset() {\n super.reset();\n this._outline = null;\n\n this._pageNumberToDestHashCapability = null;\n this._currentPageNumber = 1;\n this._isPagesLoaded = null;\n\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n }\n this._currentOutlineItemCapability = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(outlineCount) {\n this._currentOutlineItemCapability = createPromiseCapability();\n if (\n outlineCount === 0 ||\n this._pdfDocument?.loadingParams.disableAutoFetch\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n } else if (this._isPagesLoaded !== null) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n\n this.eventBus.dispatch(\"outlineloaded\", {\n source: this,\n outlineCount,\n currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { url, newWindow, dest }) {\n const { linkService } = this;\n\n if (url) {\n linkService.addLinkAttributes(element, url, newWindow);\n return;\n }\n\n element.href = linkService.getDestinationHash(dest);\n element.onclick = evt => {\n this._updateCurrentTreeItem(evt.target.parentNode);\n\n if (dest) {\n linkService.goToDestination(dest);\n }\n return false;\n };\n }\n\n /**\n * @private\n */\n _setStyles(element, { bold, italic }) {\n if (bold) {\n element.style.fontWeight = \"bold\";\n }\n if (italic) {\n element.style.fontStyle = \"italic\";\n }\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { count, items }) {\n let hidden = false;\n if (count < 0) {\n let totalCount = items.length;\n if (totalCount > 0) {\n const queue = [...items];\n while (queue.length > 0) {\n const { count: nestedCount, items: nestedItems } = queue.shift();\n if (nestedCount > 0 && nestedItems.length > 0) {\n totalCount += nestedItems.length;\n queue.push(...nestedItems);\n }\n }\n }\n if (Math.abs(count) === totalCount) {\n hidden = true;\n }\n }\n super._addToggleButton(div, hidden);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._outline) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFOutlineViewerRenderParameters} params\n */\n render({ outline, pdfDocument }) {\n if (this._outline) {\n this.reset();\n }\n this._outline = outline || null;\n this._pdfDocument = pdfDocument || null;\n\n if (!outline) {\n this._dispatchEvent(/* outlineCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment();\n const queue = [{ parent: fragment, items: outline }];\n let outlineCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const item of levelData.items) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, item);\n this._setStyles(element, item);\n element.textContent = this._normalizeTextContent(item.title);\n\n div.appendChild(element);\n\n if (item.items.length > 0) {\n hasAnyNesting = true;\n this._addToggleButton(div, item);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, items: item.items });\n }\n\n levelData.parent.appendChild(div);\n outlineCount++;\n }\n }\n\n this._finishRendering(fragment, outlineCount, hasAnyNesting);\n }\n\n /**\n * Find/highlight the current outline item, corresponding to the active page.\n * @private\n */\n async _currentOutlineItem() {\n if (!this._isPagesLoaded) {\n throw new Error(\"_currentOutlineItem: All pages have not been loaded.\");\n }\n if (!this._outline || !this._pdfDocument) {\n return;\n }\n\n const pageNumberToDestHash = await this._getPageNumberToDestHash(\n this._pdfDocument\n );\n if (!pageNumberToDestHash) {\n return;\n }\n this._updateCurrentTreeItem(/* treeItem = */ null);\n\n if (this._sidebarView !== SidebarView.OUTLINE) {\n return; // The outline view is no longer visible, hence do nothing.\n }\n // When there is no destination on the current page, always check the\n // previous ones in (reverse) order.\n for (let i = this._currentPageNumber; i > 0; i--) {\n const destHash = pageNumberToDestHash.get(i);\n if (!destHash) {\n continue;\n }\n const linkElement = this.container.querySelector(`a[href=\"${destHash}\"]`);\n if (!linkElement) {\n continue;\n }\n this._scrollToCurrentTreeItem(linkElement.parentNode);\n break;\n }\n }\n\n /**\n * To (significantly) simplify the overall implementation, we will only\n * consider *one* destination per page when finding/highlighting the current\n * outline item (similar to e.g. Adobe Reader); more specifically, we choose\n * the *first* outline item at the *lowest* level of the outline tree.\n * @private\n */\n async _getPageNumberToDestHash(pdfDocument) {\n if (this._pageNumberToDestHashCapability) {\n return this._pageNumberToDestHashCapability.promise;\n }\n this._pageNumberToDestHashCapability = createPromiseCapability();\n\n const pageNumberToDestHash = new Map(),\n pageNumberNesting = new Map();\n const queue = [{ nesting: 0, items: this._outline }];\n while (queue.length > 0) {\n const levelData = queue.shift(),\n currentNesting = levelData.nesting;\n for (const { dest, items } of levelData.items) {\n let explicitDest, pageNumber;\n if (typeof dest === \"string\") {\n explicitDest = await pdfDocument.getDestination(dest);\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n } else {\n explicitDest = dest;\n }\n if (Array.isArray(explicitDest)) {\n const [destRef] = explicitDest;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this.linkService._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n try {\n pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n this.linkService.cachePageRef(pageNumber, destRef);\n } catch (ex) {\n // Invalid page reference, ignore it and continue parsing.\n }\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n }\n\n if (\n Number.isInteger(pageNumber) &&\n (!pageNumberToDestHash.has(pageNumber) ||\n currentNesting > pageNumberNesting.get(pageNumber))\n ) {\n const destHash = this.linkService.getDestinationHash(dest);\n pageNumberToDestHash.set(pageNumber, destHash);\n pageNumberNesting.set(pageNumber, currentNesting);\n }\n }\n\n if (items.length > 0) {\n queue.push({ nesting: currentNesting + 1, items });\n }\n }\n }\n\n this._pageNumberToDestHashCapability.resolve(\n pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\n );\n return this._pageNumberToDestHashCapability.promise;\n }\n}\n\nexport { PDFOutlineViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n normalizeWheelEventDelta,\n PresentationModeState,\n ScrollMode,\n SpreadMode,\n} from \"./ui_utils.js\";\n\nconst DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms\nconst ACTIVE_SELECTOR = \"pdfPresentationMode\";\nconst CONTROLS_SELECTOR = \"pdfPresentationModeControls\";\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; // in ms\nconst PAGE_SWITCH_THRESHOLD = 0.1;\n\n// Number of CSS pixels for a movement to count as a swipe.\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\n\n// Swipe angle deviation from the x or y axis before it is not\n// considered a swipe in that direction any more.\nconst SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\n/**\n * @typedef {Object} PDFPresentationModeOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {EventBus} eventBus - The application event bus.\n */\n\nclass PDFPresentationMode {\n /**\n * @param {PDFPresentationModeOptions} options\n */\n constructor({ container, pdfViewer, eventBus }) {\n this.container = container;\n this.pdfViewer = pdfViewer;\n this.eventBus = eventBus;\n\n this.active = false;\n this.args = null;\n this.contextMenuOpen = false;\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n this.touchSwipeState = null;\n }\n\n /**\n * Request the browser to enter fullscreen mode.\n * @returns {boolean} Indicating if the request was successful.\n */\n request() {\n if (\n this.switchInProgress ||\n this.active ||\n !this.pdfViewer.pagesCount ||\n !this.container.requestFullscreen\n ) {\n return false;\n }\n this.#addFullscreenChangeListeners();\n this.#setSwitchInProgress();\n this.#notifyStateChange();\n\n this.container.requestFullscreen();\n\n this.args = {\n pageNumber: this.pdfViewer.currentPageNumber,\n scaleValue: this.pdfViewer.currentScaleValue,\n scrollMode: this.pdfViewer.scrollMode,\n spreadMode: this.pdfViewer.spreadMode,\n };\n return true;\n }\n\n #mouseWheel(evt) {\n if (!this.active) {\n return;\n }\n\n evt.preventDefault();\n\n const delta = normalizeWheelEventDelta(evt);\n const currentTime = Date.now();\n const storedTime = this.mouseScrollTimeStamp;\n\n // If we've already switched page, avoid accidentally switching again.\n if (\n currentTime > storedTime &&\n currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME\n ) {\n return;\n }\n // If the scroll direction changed, reset the accumulated scroll delta.\n if (\n (this.mouseScrollDelta > 0 && delta < 0) ||\n (this.mouseScrollDelta < 0 && delta > 0)\n ) {\n this.#resetMouseScrollState();\n }\n this.mouseScrollDelta += delta;\n\n if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n const totalDelta = this.mouseScrollDelta;\n this.#resetMouseScrollState();\n const success =\n totalDelta > 0\n ? this.pdfViewer.previousPage()\n : this.pdfViewer.nextPage();\n if (success) {\n this.mouseScrollTimeStamp = currentTime;\n }\n }\n }\n\n #notifyStateChange() {\n let state = PresentationModeState.NORMAL;\n if (this.switchInProgress) {\n state = PresentationModeState.CHANGING;\n } else if (this.active) {\n state = PresentationModeState.FULLSCREEN;\n }\n this.eventBus.dispatch(\"presentationmodechanged\", {\n source: this,\n state,\n });\n }\n\n /**\n * Used to initialize a timeout when requesting Presentation Mode,\n * i.e. when the browser is requested to enter fullscreen mode.\n * This timeout is used to prevent the current page from being scrolled\n * partially, or completely, out of view when entering Presentation Mode.\n * NOTE: This issue seems limited to certain zoom levels (e.g. page-width).\n */\n #setSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n }\n this.switchInProgress = setTimeout(() => {\n this.#removeFullscreenChangeListeners();\n delete this.switchInProgress;\n this.#notifyStateChange();\n }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);\n }\n\n #resetSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n delete this.switchInProgress;\n }\n }\n\n #enter() {\n this.active = true;\n this.#resetSwitchInProgress();\n this.#notifyStateChange();\n this.container.classList.add(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when entering\n // Presentation Mode, by waiting until fullscreen mode in enabled.\n setTimeout(() => {\n this.pdfViewer.scrollMode = ScrollMode.PAGE;\n this.pdfViewer.spreadMode = SpreadMode.NONE;\n this.pdfViewer.currentPageNumber = this.args.pageNumber;\n this.pdfViewer.currentScaleValue = \"page-fit\";\n }, 0);\n\n this.#addWindowListeners();\n this.#showControls();\n this.contextMenuOpen = false;\n\n // Text selection is disabled in Presentation Mode, thus it's not possible\n // for the user to deselect text that is selected (e.g. with \"Select all\")\n // when entering Presentation Mode, hence we remove any active selection.\n window.getSelection().removeAllRanges();\n }\n\n #exit() {\n const pageNumber = this.pdfViewer.currentPageNumber;\n this.container.classList.remove(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when exiting\n // Presentation Mode, by waiting until fullscreen mode is disabled.\n setTimeout(() => {\n this.active = false;\n this.#removeFullscreenChangeListeners();\n this.#notifyStateChange();\n\n this.pdfViewer.scrollMode = this.args.scrollMode;\n this.pdfViewer.spreadMode = this.args.spreadMode;\n this.pdfViewer.currentScaleValue = this.args.scaleValue;\n this.pdfViewer.currentPageNumber = pageNumber;\n this.args = null;\n }, 0);\n\n this.#removeWindowListeners();\n this.#hideControls();\n this.#resetMouseScrollState();\n this.contextMenuOpen = false;\n }\n\n #mouseDown(evt) {\n if (this.contextMenuOpen) {\n this.contextMenuOpen = false;\n evt.preventDefault();\n return;\n }\n if (evt.button === 0) {\n // Enable clicking of links in presentation mode. Note: only links\n // pointing to destinations in the current PDF document work.\n const isInternalLink =\n evt.target.href && evt.target.classList.contains(\"internalLink\");\n if (!isInternalLink) {\n // Unless an internal link was clicked, advance one page.\n evt.preventDefault();\n\n if (evt.shiftKey) {\n this.pdfViewer.previousPage();\n } else {\n this.pdfViewer.nextPage();\n }\n }\n }\n }\n\n #contextMenu() {\n this.contextMenuOpen = true;\n }\n\n #showControls() {\n if (this.controlsTimeout) {\n clearTimeout(this.controlsTimeout);\n } else {\n this.container.classList.add(CONTROLS_SELECTOR);\n }\n this.controlsTimeout = setTimeout(() => {\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }, DELAY_BEFORE_HIDING_CONTROLS);\n }\n\n #hideControls() {\n if (!this.controlsTimeout) {\n return;\n }\n clearTimeout(this.controlsTimeout);\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }\n\n /**\n * Resets the properties used for tracking mouse scrolling events.\n */\n #resetMouseScrollState() {\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n }\n\n #touchSwipe(evt) {\n if (!this.active) {\n return;\n }\n if (evt.touches.length > 1) {\n // Multiple touch points detected; cancel the swipe.\n this.touchSwipeState = null;\n return;\n }\n\n switch (evt.type) {\n case \"touchstart\":\n this.touchSwipeState = {\n startX: evt.touches[0].pageX,\n startY: evt.touches[0].pageY,\n endX: evt.touches[0].pageX,\n endY: evt.touches[0].pageY,\n };\n break;\n case \"touchmove\":\n if (this.touchSwipeState === null) {\n return;\n }\n this.touchSwipeState.endX = evt.touches[0].pageX;\n this.touchSwipeState.endY = evt.touches[0].pageY;\n // Avoid the swipe from triggering browser gestures (Chrome in\n // particular has some sort of swipe gesture in fullscreen mode).\n evt.preventDefault();\n break;\n case \"touchend\":\n if (this.touchSwipeState === null) {\n return;\n }\n let delta = 0;\n const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n const absAngle = Math.abs(Math.atan2(dy, dx));\n if (\n Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n (absAngle <= SWIPE_ANGLE_THRESHOLD ||\n absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\n ) {\n // Horizontal swipe.\n delta = dx;\n } else if (\n Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD\n ) {\n // Vertical swipe.\n delta = dy;\n }\n if (delta > 0) {\n this.pdfViewer.previousPage();\n } else if (delta < 0) {\n this.pdfViewer.nextPage();\n }\n break;\n }\n }\n\n #addWindowListeners() {\n this.showControlsBind = this.#showControls.bind(this);\n this.mouseDownBind = this.#mouseDown.bind(this);\n this.mouseWheelBind = this.#mouseWheel.bind(this);\n this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);\n this.contextMenuBind = this.#contextMenu.bind(this);\n this.touchSwipeBind = this.#touchSwipe.bind(this);\n\n window.addEventListener(\"mousemove\", this.showControlsBind);\n window.addEventListener(\"mousedown\", this.mouseDownBind);\n window.addEventListener(\"wheel\", this.mouseWheelBind, { passive: false });\n window.addEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.addEventListener(\"contextmenu\", this.contextMenuBind);\n window.addEventListener(\"touchstart\", this.touchSwipeBind);\n window.addEventListener(\"touchmove\", this.touchSwipeBind);\n window.addEventListener(\"touchend\", this.touchSwipeBind);\n }\n\n #removeWindowListeners() {\n window.removeEventListener(\"mousemove\", this.showControlsBind);\n window.removeEventListener(\"mousedown\", this.mouseDownBind);\n window.removeEventListener(\"wheel\", this.mouseWheelBind, {\n passive: false,\n });\n window.removeEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.removeEventListener(\"contextmenu\", this.contextMenuBind);\n window.removeEventListener(\"touchstart\", this.touchSwipeBind);\n window.removeEventListener(\"touchmove\", this.touchSwipeBind);\n window.removeEventListener(\"touchend\", this.touchSwipeBind);\n\n delete this.showControlsBind;\n delete this.mouseDownBind;\n delete this.mouseWheelBind;\n delete this.resetMouseScrollStateBind;\n delete this.contextMenuBind;\n delete this.touchSwipeBind;\n }\n\n #fullscreenChange() {\n if (/* isFullscreen = */ document.fullscreenElement) {\n this.#enter();\n } else {\n this.#exit();\n }\n }\n\n #addFullscreenChangeListeners() {\n this.fullscreenChangeBind = this.#fullscreenChange.bind(this);\n window.addEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n }\n\n #removeFullscreenChangeListeners() {\n window.removeEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n delete this.fullscreenChangeBind;\n }\n}\n\nexport { PDFPresentationMode };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n/** @typedef {import(\"./pdf_viewer\").PDFViewer} PDFViewer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_thumbnail_viewer\").PDFThumbnailViewer} PDFThumbnailViewer */\n\nimport { RenderingCancelledException } from \"pdfjs-lib\";\nimport { RenderingStates } from \"./ui_utils.js\";\n\nconst CLEANUP_TIMEOUT = 30000;\n\n/**\n * Controls rendering of the views for pages and thumbnails.\n */\nclass PDFRenderingQueue {\n constructor() {\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n /** @type {number} */\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n /**\n * @param {PDFViewer} pdfViewer\n */\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n /**\n * @param {PDFThumbnailViewer} pdfThumbnailViewer\n */\n setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n\n /**\n * @returns {boolean}\n */\n hasViewer() {\n return !!this.pdfViewer;\n }\n\n /**\n * @param {Object} currentlyVisiblePages\n */\n renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n\n // Pages have a higher priority than thumbnails, so check them first.\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n // No pages needed rendering, so check thumbnails.\n if (\n this.isThumbnailViewEnabled &&\n this.pdfThumbnailViewer?.forceRendering()\n ) {\n return;\n }\n\n if (this.printing) {\n // If printing is currently ongoing do not reschedule cleanup.\n return;\n }\n\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n\n /**\n * @param {Object} visible\n * @param {Array} views\n * @param {boolean} scrolledDown\n * @param {boolean} [preRenderExtra]\n */\n getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\n /**\n * The state has changed. Figure out which page has the highest priority to\n * render next (if any).\n *\n * Priority:\n * 1. visible pages\n * 2. if last scrolled down, the page after the visible pages, or\n * if last scrolled up, the page before the visible pages\n */\n const visibleViews = visible.views,\n numVisible = visibleViews.length;\n\n if (numVisible === 0) {\n return null;\n }\n for (let i = 0; i < numVisible; i++) {\n const view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n const firstId = visible.first.id,\n lastId = visible.last.id;\n\n // All the visible views have rendered; try to handle any \"holes\" in the\n // page layout (can happen e.g. with spreadModes at higher zoom levels).\n if (lastId - firstId + 1 > numVisible) {\n const visibleIds = visible.ids;\n for (let i = 1, ii = lastId - firstId; i < ii; i++) {\n const holeId = scrolledDown ? firstId + i : lastId - i;\n if (visibleIds.has(holeId)) {\n continue;\n }\n const holeView = views[holeId - 1];\n if (!this.isViewFinished(holeView)) {\n return holeView;\n }\n }\n }\n\n // All the visible views have rendered; try to render next/previous page.\n // (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\n let preRenderIndex = scrolledDown ? lastId : firstId - 2;\n let preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n if (preRenderExtra) {\n preRenderIndex += scrolledDown ? 1 : -1;\n preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n }\n // Everything that needs to be rendered has been.\n return null;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n\n /**\n * Render a page or thumbnail view. This calls the appropriate function\n * based on the views state. If the view is already rendered it will return\n * `false`.\n *\n * @param {IRenderableView} view\n */\n renderView(view) {\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n view\n .draw()\n .finally(() => {\n this.renderHighestPriority();\n })\n .catch(reason => {\n if (reason instanceof RenderingCancelledException) {\n return;\n }\n console.error(`renderView: \"${reason}\"`);\n });\n break;\n }\n return true;\n }\n}\n\nexport { PDFRenderingQueue };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n\nimport { apiPageLayoutToViewerModes, RenderingStates } from \"./ui_utils.js\";\nimport { createPromiseCapability, shadow } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PDFScriptingManagerOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {string} sandboxBundleSrc - The path and filename of the scripting\n * bundle.\n * @property {Object} [scriptingFactory] - The factory that is used when\n * initializing scripting; must contain a `createScripting` method.\n * PLEASE NOTE: Primarily intended for the default viewer use-case.\n * @property {function} [docPropertiesLookup] - The function that is used to\n * lookup the necessary document properties.\n */\n\nclass PDFScriptingManager {\n /**\n * @param {PDFScriptingManagerOptions} options\n */\n constructor({\n eventBus,\n sandboxBundleSrc = null,\n scriptingFactory = null,\n docPropertiesLookup = null,\n }) {\n this._pdfDocument = null;\n this._pdfViewer = null;\n this._closeCapability = null;\n this._destroyCapability = null;\n\n this._scripting = null;\n this._mouseState = Object.create(null);\n this._ready = false;\n\n this._eventBus = eventBus;\n this._sandboxBundleSrc = sandboxBundleSrc;\n this._scriptingFactory = scriptingFactory;\n this._docPropertiesLookup = docPropertiesLookup;\n\n // The default viewer already handles adding/removing of DOM events,\n // hence limit this to only the viewer components.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"COMPONENTS\") &&\n !this._scriptingFactory\n ) {\n window.addEventListener(\"updatefromsandbox\", event => {\n this._eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n });\n }\n }\n\n setViewer(pdfViewer) {\n this._pdfViewer = pdfViewer;\n }\n\n async setDocument(pdfDocument) {\n if (this._pdfDocument) {\n await this._destroyScripting();\n }\n this._pdfDocument = pdfDocument;\n\n if (!pdfDocument) {\n return;\n }\n const [objects, calculationOrder, docActions] = await Promise.all([\n pdfDocument.getFieldObjects(),\n pdfDocument.getCalculationOrderIds(),\n pdfDocument.getJSActions(),\n ]);\n\n if (!objects && !docActions) {\n // No FieldObjects or JavaScript actions were found in the document.\n await this._destroyScripting();\n return;\n }\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the data resolved.\n }\n try {\n this._scripting = this._createScripting();\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n this._internalEvents.set(\"updatefromsandbox\", event => {\n if (event?.source !== window) {\n return;\n }\n this._updateFromSandbox(event.detail);\n });\n this._internalEvents.set(\"dispatcheventinsandbox\", event => {\n this._scripting?.dispatchEventInSandbox(event.detail);\n });\n\n this._internalEvents.set(\"pagechanging\", ({ pageNumber, previous }) => {\n if (pageNumber === previous) {\n return; // The current page didn't change.\n }\n this._dispatchPageClose(previous);\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagerendered\", ({ pageNumber }) => {\n if (!this._pageOpenPending.has(pageNumber)) {\n return; // No pending \"PageOpen\" event for the newly rendered page.\n }\n if (pageNumber !== this._pdfViewer.currentPageNumber) {\n return; // The newly rendered page is no longer the current one.\n }\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagesdestroy\", async event => {\n await this._dispatchPageClose(this._pdfViewer.currentPageNumber);\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillClose\",\n });\n\n this._closeCapability?.resolve();\n });\n\n this._domEvents.set(\"mousedown\", event => {\n this._mouseState.isDown = true;\n });\n this._domEvents.set(\"mouseup\", event => {\n this._mouseState.isDown = false;\n });\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._on(name, listener);\n }\n for (const [name, listener] of this._domEvents) {\n window.addEventListener(name, listener);\n }\n\n try {\n const docProperties = await this._getDocProperties();\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the properties resolved.\n }\n\n await this._scripting.createSandbox({\n objects,\n calculationOrder,\n appInfo: {\n platform: navigator.platform,\n language: navigator.language,\n },\n docInfo: {\n ...docProperties,\n actions: docActions,\n },\n });\n\n this._eventBus.dispatch(\"sandboxcreated\", { source: this });\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"Open\",\n });\n await this._dispatchPageOpen(\n this._pdfViewer.currentPageNumber,\n /* initialize = */ true\n );\n\n // Defer this slightly, to ensure that scripting is *fully* initialized.\n Promise.resolve().then(() => {\n if (pdfDocument === this._pdfDocument) {\n this._ready = true;\n }\n });\n }\n\n async dispatchWillSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillSave\",\n });\n }\n\n async dispatchDidSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidSave\",\n });\n }\n\n async dispatchWillPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillPrint\",\n });\n }\n\n async dispatchDidPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidPrint\",\n });\n }\n\n get mouseState() {\n return this._mouseState;\n }\n\n get destroyPromise() {\n return this._destroyCapability?.promise || null;\n }\n\n get ready() {\n return this._ready;\n }\n\n /**\n * @private\n */\n get _internalEvents() {\n return shadow(this, \"_internalEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _domEvents() {\n return shadow(this, \"_domEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _pageOpenPending() {\n return shadow(this, \"_pageOpenPending\", new Set());\n }\n\n /**\n * @private\n */\n get _visitedPages() {\n return shadow(this, \"_visitedPages\", new Map());\n }\n\n /**\n * @private\n */\n async _updateFromSandbox(detail) {\n // Ignore some events, see below, that don't make sense in PresentationMode.\n const isInPresentationMode =\n this._pdfViewer.isInPresentationMode ||\n this._pdfViewer.isChangingPresentationMode;\n\n const { id, siblings, command, value } = detail;\n if (!id) {\n switch (command) {\n case \"clear\":\n console.clear();\n break;\n case \"error\":\n console.error(value);\n break;\n case \"layout\":\n if (isInPresentationMode) {\n return;\n }\n const modes = apiPageLayoutToViewerModes(value);\n this._pdfViewer.spreadMode = modes.spreadMode;\n break;\n case \"page-num\":\n this._pdfViewer.currentPageNumber = value + 1;\n break;\n case \"print\":\n await this._pdfViewer.pagesPromise;\n this._eventBus.dispatch(\"print\", { source: this });\n break;\n case \"println\":\n console.log(value);\n break;\n case \"zoom\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.currentScaleValue = value;\n break;\n case \"SaveAs\":\n this._eventBus.dispatch(\"save\", { source: this });\n break;\n case \"FirstPage\":\n this._pdfViewer.currentPageNumber = 1;\n break;\n case \"LastPage\":\n this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;\n break;\n case \"NextPage\":\n this._pdfViewer.nextPage();\n break;\n case \"PrevPage\":\n this._pdfViewer.previousPage();\n break;\n case \"ZoomViewIn\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.increaseScale();\n break;\n case \"ZoomViewOut\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.decreaseScale();\n break;\n }\n return;\n }\n\n if (isInPresentationMode) {\n if (detail.focus) {\n return;\n }\n }\n delete detail.id;\n delete detail.siblings;\n\n const ids = siblings ? [id, ...siblings] : [id];\n for (const elementId of ids) {\n const element = document.getElementById(elementId);\n if (element) {\n element.dispatchEvent(new CustomEvent(\"updatefromsandbox\", { detail }));\n } else {\n // The element hasn't been rendered yet, use the AnnotationStorage.\n this._pdfDocument?.annotationStorage.setValue(elementId, detail);\n }\n }\n }\n\n /**\n * @private\n */\n async _dispatchPageOpen(pageNumber, initialize = false) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (initialize) {\n this._closeCapability = createPromiseCapability();\n }\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n const pageView = this._pdfViewer.getPageView(/* index = */ pageNumber - 1);\n\n if (pageView?.renderingState !== RenderingStates.FINISHED) {\n this._pageOpenPending.add(pageNumber);\n return; // Wait for the page to finish rendering.\n }\n this._pageOpenPending.delete(pageNumber);\n\n const actionsPromise = (async () => {\n // Avoid sending, and thus serializing, the `actions` data more than once.\n const actions = await (!visitedPages.has(pageNumber)\n ? pageView.pdfPage?.getJSActions()\n : null);\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageOpen\",\n pageNumber,\n actions,\n });\n })();\n visitedPages.set(pageNumber, actionsPromise);\n }\n\n /**\n * @private\n */\n async _dispatchPageClose(pageNumber) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n if (this._pageOpenPending.has(pageNumber)) {\n return; // The page is still rendering; no \"PageOpen\" event dispatched.\n }\n const actionsPromise = visitedPages.get(pageNumber);\n if (!actionsPromise) {\n return; // The \"PageClose\" event must be preceded by a \"PageOpen\" event.\n }\n visitedPages.set(pageNumber, null);\n\n // Ensure that the \"PageOpen\" event is dispatched first.\n await actionsPromise;\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageClose\",\n pageNumber,\n });\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an {Object}\n * containing the necessary document properties; please find the expected\n * format in `PDFViewerApplication._scriptingDocProperties`.\n * @private\n */\n async _getDocProperties() {\n if (this._docPropertiesLookup) {\n return this._docPropertiesLookup(this._pdfDocument);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { docPropertiesLookup } = require(\"./generic_scripting.js\");\n\n return docPropertiesLookup(this._pdfDocument);\n }\n throw new Error(\"_getDocProperties: Unable to lookup properties.\");\n }\n\n /**\n * @private\n */\n _createScripting() {\n this._destroyCapability = createPromiseCapability();\n\n if (this._scripting) {\n throw new Error(\"_createScripting: Scripting already exists.\");\n }\n if (this._scriptingFactory) {\n return this._scriptingFactory.createScripting({\n sandboxBundleSrc: this._sandboxBundleSrc,\n });\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { GenericScripting } = require(\"./generic_scripting.js\");\n\n return new GenericScripting(this._sandboxBundleSrc);\n }\n throw new Error(\"_createScripting: Cannot create scripting.\");\n }\n\n /**\n * @private\n */\n async _destroyScripting() {\n if (!this._scripting) {\n this._pdfDocument = null;\n\n this._destroyCapability?.resolve();\n return;\n }\n if (this._closeCapability) {\n await Promise.race([\n this._closeCapability.promise,\n new Promise(resolve => {\n // Avoid the scripting/sandbox-destruction hanging indefinitely.\n setTimeout(resolve, 1000);\n }),\n ]).catch(reason => {\n // Ignore any errors, to ensure that the sandbox is always destroyed.\n });\n this._closeCapability = null;\n }\n this._pdfDocument = null;\n\n try {\n await this._scripting.destroySandbox();\n } catch (ex) {}\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._off(name, listener);\n }\n this._internalEvents.clear();\n\n for (const [name, listener] of this._domEvents) {\n window.removeEventListener(name, listener);\n }\n this._domEvents.clear();\n\n this._pageOpenPending.clear();\n this._visitedPages.clear();\n\n this._scripting = null;\n delete this._mouseState.isDown;\n this._ready = false;\n\n this._destroyCapability?.resolve();\n }\n}\n\nexport { PDFScriptingManager };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PresentationModeState,\n RenderingStates,\n SidebarView,\n} from \"./ui_utils.js\";\n\nconst UI_NOTIFICATION_CLASS = \"pdfSidebarNotification\";\n\n/**\n * @typedef {Object} PDFSidebarOptions\n * @property {PDFSidebarElements} elements - The DOM elements.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - The localization service.\n */\n\n/**\n * @typedef {Object} PDFSidebarElements\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} viewerContainer - The viewer container\n * (in which the viewer element is placed).\n * @property {HTMLButtonElement} toggleButton - The button used for\n * opening/closing the sidebar.\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\n * the thumbnail view.\n * @property {HTMLButtonElement} outlineButton - The button used to show\n * the outline view.\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\n * the attachments view.\n * @property {HTMLButtonElement} layersButton - The button used to show\n * the layers view.\n * @property {HTMLDivElement} thumbnailView - The container in which\n * the thumbnails are placed.\n * @property {HTMLDivElement} outlineView - The container in which\n * the outline is placed.\n * @property {HTMLDivElement} attachmentsView - The container in which\n * the attachments are placed.\n * @property {HTMLDivElement} layersView - The container in which\n * the layers are placed.\n * @property {HTMLDivElement} outlineOptionsContainer - The container in which\n * the outline view-specific option button(s) are placed.\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\n * find the current outline item.\n */\n\nclass PDFSidebar {\n /**\n * @param {PDFSidebarOptions} options\n */\n constructor({ elements, pdfViewer, pdfThumbnailViewer, eventBus, l10n }) {\n this.isOpen = false;\n this.active = SidebarView.THUMBS;\n this.isInitialViewSet = false;\n\n /**\n * Callback used when the sidebar has been opened/closed, to ensure that\n * the viewers (PDFViewer/PDFThumbnailViewer) are updated correctly.\n */\n this.onToggled = null;\n\n this.pdfViewer = pdfViewer;\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n\n this.outerContainer = elements.outerContainer;\n this.viewerContainer = elements.viewerContainer;\n this.toggleButton = elements.toggleButton;\n\n this.thumbnailButton = elements.thumbnailButton;\n this.outlineButton = elements.outlineButton;\n this.attachmentsButton = elements.attachmentsButton;\n this.layersButton = elements.layersButton;\n\n this.thumbnailView = elements.thumbnailView;\n this.outlineView = elements.outlineView;\n this.attachmentsView = elements.attachmentsView;\n this.layersView = elements.layersView;\n\n this._outlineOptionsContainer = elements.outlineOptionsContainer;\n this._currentOutlineItemButton = elements.currentOutlineItemButton;\n\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n this._addEventListeners();\n }\n\n reset() {\n this.isInitialViewSet = false;\n\n this._hideUINotification(/* reset = */ true);\n this.switchView(SidebarView.THUMBS);\n\n this.outlineButton.disabled = false;\n this.attachmentsButton.disabled = false;\n this.layersButton.disabled = false;\n this._currentOutlineItemButton.disabled = true;\n }\n\n /**\n * @type {number} One of the values in {SidebarView}.\n */\n get visibleView() {\n return this.isOpen ? this.active : SidebarView.NONE;\n }\n\n get isThumbnailViewVisible() {\n return this.isOpen && this.active === SidebarView.THUMBS;\n }\n\n get isOutlineViewVisible() {\n return this.isOpen && this.active === SidebarView.OUTLINE;\n }\n\n get isAttachmentsViewVisible() {\n return this.isOpen && this.active === SidebarView.ATTACHMENTS;\n }\n\n get isLayersViewVisible() {\n return this.isOpen && this.active === SidebarView.LAYERS;\n }\n\n /**\n * @param {number} view - The sidebar view that should become visible,\n * must be one of the values in {SidebarView}.\n */\n setInitialView(view = SidebarView.NONE) {\n if (this.isInitialViewSet) {\n return;\n }\n this.isInitialViewSet = true;\n\n // If the user has already manually opened the sidebar, immediately closing\n // it would be bad UX; also ignore the \"unknown\" sidebar view value.\n if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\n this._dispatchEvent();\n return;\n }\n // Prevent dispatching two back-to-back `sidebarviewchanged` events,\n // since `this._switchView` dispatched the event if the view changed.\n if (!this._switchView(view, /* forceOpen */ true)) {\n this._dispatchEvent();\n }\n }\n\n /**\n * @param {number} view - The sidebar view that should be switched to,\n * must be one of the values in {SidebarView}.\n * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\n * The default value is `false`.\n */\n switchView(view, forceOpen = false) {\n this._switchView(view, forceOpen);\n }\n\n /**\n * @returns {boolean} Indicating if `this._dispatchEvent` was called.\n * @private\n */\n _switchView(view, forceOpen = false) {\n const isViewChanged = view !== this.active;\n let shouldForceRendering = false;\n\n switch (view) {\n case SidebarView.NONE:\n if (this.isOpen) {\n this.close();\n return true; // Closing will trigger rendering and dispatch the event.\n }\n return false;\n case SidebarView.THUMBS:\n if (this.isOpen && isViewChanged) {\n shouldForceRendering = true;\n }\n break;\n case SidebarView.OUTLINE:\n if (this.outlineButton.disabled) {\n return false;\n }\n break;\n case SidebarView.ATTACHMENTS:\n if (this.attachmentsButton.disabled) {\n return false;\n }\n break;\n case SidebarView.LAYERS:\n if (this.layersButton.disabled) {\n return false;\n }\n break;\n default:\n console.error(`PDFSidebar._switchView: \"${view}\" is not a valid view.`);\n return false;\n }\n // Update the active view *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = view;\n\n // Update the CSS classes, for all buttons...\n this.thumbnailButton.classList.toggle(\n \"toggled\",\n view === SidebarView.THUMBS\n );\n this.outlineButton.classList.toggle(\n \"toggled\",\n view === SidebarView.OUTLINE\n );\n this.attachmentsButton.classList.toggle(\n \"toggled\",\n view === SidebarView.ATTACHMENTS\n );\n this.layersButton.classList.toggle(\"toggled\", view === SidebarView.LAYERS);\n // ... and for all views.\n this.thumbnailView.classList.toggle(\"hidden\", view !== SidebarView.THUMBS);\n this.outlineView.classList.toggle(\"hidden\", view !== SidebarView.OUTLINE);\n this.attachmentsView.classList.toggle(\n \"hidden\",\n view !== SidebarView.ATTACHMENTS\n );\n this.layersView.classList.toggle(\"hidden\", view !== SidebarView.LAYERS);\n\n // Finally, update view-specific CSS classes.\n this._outlineOptionsContainer.classList.toggle(\n \"hidden\",\n view !== SidebarView.OUTLINE\n );\n\n if (forceOpen && !this.isOpen) {\n this.open();\n return true; // Opening will trigger rendering and dispatch the event.\n }\n if (shouldForceRendering) {\n this._updateThumbnailViewer();\n this._forceRendering();\n }\n if (isViewChanged) {\n this._dispatchEvent();\n }\n return isViewChanged;\n }\n\n open() {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n\n this.outerContainer.classList.add(\"sidebarMoving\", \"sidebarOpen\");\n\n if (this.active === SidebarView.THUMBS) {\n this._updateThumbnailViewer();\n }\n this._forceRendering();\n this._dispatchEvent();\n\n this._hideUINotification();\n }\n\n close() {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n\n this.outerContainer.classList.add(\"sidebarMoving\");\n this.outerContainer.classList.remove(\"sidebarOpen\");\n\n this._forceRendering();\n this._dispatchEvent();\n }\n\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"sidebarviewchanged\", {\n source: this,\n view: this.visibleView,\n });\n }\n\n /**\n * @private\n */\n _forceRendering() {\n if (this.onToggled) {\n this.onToggled();\n } else {\n // Fallback\n this.pdfViewer.forceRendering();\n this.pdfThumbnailViewer.forceRendering();\n }\n }\n\n /**\n * @private\n */\n _updateThumbnailViewer() {\n const { pdfViewer, pdfThumbnailViewer } = this;\n\n // Use the rendered pages to set the corresponding thumbnail images.\n const pagesCount = pdfViewer.pagesCount;\n for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.renderingState === RenderingStates.FINISHED) {\n const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n }\n pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n }\n\n /**\n * @private\n */\n _showUINotification() {\n this.l10n.get(\"toggle_sidebar_notification2.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n\n if (!this.isOpen) {\n // Only show the notification on the `toggleButton` if the sidebar is\n // currently closed, to avoid unnecessarily bothering the user.\n this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n }\n }\n\n /**\n * @private\n */\n _hideUINotification(reset = false) {\n if (this.isOpen || reset) {\n // Only hide the notification on the `toggleButton` if the sidebar is\n // currently open, or when the current PDF document is being closed.\n this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n }\n\n if (reset) {\n this.l10n.get(\"toggle_sidebar.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n }\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.viewerContainer.addEventListener(\"transitionend\", evt => {\n if (evt.target === this.viewerContainer) {\n this.outerContainer.classList.remove(\"sidebarMoving\");\n }\n });\n\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n // Buttons for switching views.\n this.thumbnailButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.THUMBS);\n });\n\n this.outlineButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.OUTLINE);\n });\n this.outlineButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"toggleoutlinetree\", { source: this });\n });\n\n this.attachmentsButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.ATTACHMENTS);\n });\n\n this.layersButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.LAYERS);\n });\n this.layersButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"resetlayers\", { source: this });\n });\n\n // Buttons for view-specific options.\n this._currentOutlineItemButton.addEventListener(\"click\", () => {\n this.eventBus.dispatch(\"currentoutlineitem\", { source: this });\n });\n\n // Disable/enable views.\n const onTreeLoaded = (count, button, view) => {\n button.disabled = !count;\n\n if (count) {\n this._showUINotification();\n } else if (this.active === view) {\n // If the `view` was opened by the user during document load,\n // switch away from it if it turns out to be empty.\n this.switchView(SidebarView.THUMBS);\n }\n };\n\n this.eventBus._on(\"outlineloaded\", evt => {\n onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\n\n evt.currentOutlineItemPromise.then(enabled => {\n if (!this.isInitialViewSet) {\n return;\n }\n this._currentOutlineItemButton.disabled = !enabled;\n });\n });\n\n this.eventBus._on(\"attachmentsloaded\", evt => {\n onTreeLoaded(\n evt.attachmentsCount,\n this.attachmentsButton,\n SidebarView.ATTACHMENTS\n );\n });\n\n this.eventBus._on(\"layersloaded\", evt => {\n onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\n });\n\n // Update the thumbnailViewer, if visible, when exiting presentation mode.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n if (\n evt.state === PresentationModeState.NORMAL &&\n this.isThumbnailViewVisible\n ) {\n this._updateThumbnailViewer();\n }\n });\n }\n}\n\nexport { PDFSidebar };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst SIDEBAR_WIDTH_VAR = \"--sidebar-width\";\nconst SIDEBAR_MIN_WIDTH = 200; // pixels\nconst SIDEBAR_RESIZING_CLASS = \"sidebarResizing\";\n\n/**\n * @typedef {Object} PDFSidebarResizerOptions\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\n * order to adjust the width of the sidebar.\n */\n\nclass PDFSidebarResizer {\n /**\n * @param {PDFSidebarResizerOptions} options\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.isRTL = false;\n this.sidebarOpen = false;\n this.doc = document.documentElement;\n this._width = null;\n this._outerContainerWidth = null;\n this._boundEvents = Object.create(null);\n\n this.outerContainer = options.outerContainer;\n this.resizer = options.resizer;\n this.eventBus = eventBus;\n\n l10n.getDirection().then(dir => {\n this.isRTL = dir === \"rtl\";\n });\n this._addEventListeners();\n }\n\n /**\n * @type {number}\n */\n get outerContainerWidth() {\n return (this._outerContainerWidth ||= this.outerContainer.clientWidth);\n }\n\n /**\n * @private\n * returns {boolean} Indicating if the sidebar width was updated.\n */\n _updateWidth(width = 0) {\n // Prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n const maxWidth = Math.floor(this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < SIDEBAR_MIN_WIDTH) {\n width = SIDEBAR_MIN_WIDTH;\n }\n // Only update the UI when the sidebar width did in fact change.\n if (width === this._width) {\n return false;\n }\n this._width = width;\n this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\n return true;\n }\n\n /**\n * @private\n */\n _mouseMove(evt) {\n let width = evt.clientX;\n // For sidebar resizing to work correctly in RTL mode, invert the width.\n if (this.isRTL) {\n width = this.outerContainerWidth - width;\n }\n this._updateWidth(width);\n }\n\n /**\n * @private\n */\n _mouseUp(evt) {\n // Re-enable the `transition-duration` rules when sidebar resizing ends...\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // ... and ensure that rendering will always be triggered.\n this.eventBus.dispatch(\"resize\", { source: this });\n\n const _boundEvents = this._boundEvents;\n window.removeEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.removeEventListener(\"mouseup\", _boundEvents.mouseUp);\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n const _boundEvents = this._boundEvents;\n _boundEvents.mouseMove = this._mouseMove.bind(this);\n _boundEvents.mouseUp = this._mouseUp.bind(this);\n\n this.resizer.addEventListener(\"mousedown\", evt => {\n if (evt.button !== 0) {\n return;\n }\n // Disable the `transition-duration` rules when sidebar resizing begins,\n // in order to improve responsiveness and to avoid visual glitches.\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n\n window.addEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.addEventListener(\"mouseup\", _boundEvents.mouseUp);\n });\n\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this.sidebarOpen = !!evt?.view;\n });\n\n this.eventBus._on(\"resize\", evt => {\n // When the *entire* viewer is resized, such that it becomes narrower,\n // ensure that the sidebar doesn't end up being too wide.\n if (evt?.source !== window) {\n return;\n }\n // Always reset the cached width when the viewer is resized.\n this._outerContainerWidth = null;\n\n if (!this._width) {\n // The sidebar hasn't been resized, hence no need to adjust its width.\n return;\n }\n // NOTE: If the sidebar is closed, we don't need to worry about\n // visual glitches nor ensure that rendering is triggered.\n if (!this.sidebarOpen) {\n this._updateWidth(this._width);\n return;\n }\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n const updated = this._updateWidth(this._width);\n\n Promise.resolve().then(() => {\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // Trigger rendering if the sidebar width changed, to avoid\n // depending on the order in which 'resize' events are handled.\n if (updated) {\n this.eventBus.dispatch(\"resize\", { source: this });\n }\n });\n });\n }\n}\n\nexport { PDFSidebarResizer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n getVisibleElements,\n isValidRotation,\n RenderingStates,\n scrollIntoView,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { PDFThumbnailView, TempImageFactory } from \"./pdf_thumbnail_view.js\";\n\nconst THUMBNAIL_SCROLL_MARGIN = -19;\nconst THUMBNAIL_SELECTED_CLASS = \"selected\";\n\n/**\n * @typedef {Object} PDFThumbnailViewerOptions\n * @property {HTMLDivElement} container - The container for the thumbnail\n * elements.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * Viewer control to display thumbnails for pages in a PDF document.\n */\nclass PDFThumbnailViewer {\n /**\n * @param {PDFThumbnailViewerOptions} options\n */\n constructor({ container, eventBus, linkService, renderingQueue, l10n }) {\n this.container = container;\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n this.l10n = l10n;\n\n this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));\n this._resetView();\n\n eventBus._on(\"optionalcontentconfigchanged\", () => {\n // Ensure that the thumbnails always render with the *default* optional\n // content configuration.\n this._setImageDisabled = true;\n });\n }\n\n /**\n * @private\n */\n _scrollUpdated() {\n this.renderingQueue.renderHighestPriority();\n }\n\n getThumbnail(index) {\n return this._thumbnails[index];\n }\n\n /**\n * @private\n */\n _getVisibleThumbs() {\n return getVisibleElements({\n scrollEl: this.container,\n views: this._thumbnails,\n });\n }\n\n scrollThumbnailIntoView(pageNumber) {\n if (!this.pdfDocument) {\n return;\n }\n const thumbnailView = this._thumbnails[pageNumber - 1];\n\n if (!thumbnailView) {\n console.error('scrollThumbnailIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n\n if (pageNumber !== this._currentPageNumber) {\n const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\n // Remove the highlight from the previous thumbnail...\n prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\n // ... and add the highlight to the new thumbnail.\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n }\n const { first, last, views } = this._getVisibleThumbs();\n\n // If the thumbnail isn't currently visible, scroll it into view.\n if (views.length > 0) {\n let shouldScroll = false;\n if (pageNumber <= first.id || pageNumber >= last.id) {\n shouldScroll = true;\n } else {\n for (const { id, percent } of views) {\n if (id !== pageNumber) {\n continue;\n }\n shouldScroll = percent < 100;\n break;\n }\n }\n if (shouldScroll) {\n scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\n }\n }\n\n this._currentPageNumber = pageNumber;\n }\n\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid thumbnails rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const updateArgs = { rotation };\n for (const thumbnail of this._thumbnails) {\n thumbnail.update(updateArgs);\n }\n }\n\n cleanup() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (\n this._thumbnails[i] &&\n this._thumbnails[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._thumbnails[i].reset();\n }\n }\n TempImageFactory.destroyCanvas();\n }\n\n /**\n * @private\n */\n _resetView() {\n this._thumbnails = [];\n this._currentPageNumber = 1;\n this._pageLabels = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._setImageDisabled = false;\n\n // Remove the thumbnails from the DOM.\n this.container.textContent = \"\";\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const firstPagePromise = pdfDocument.getPage(1);\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n\n firstPagePromise\n .then(firstPdfPage => {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n\n const pagesCount = pdfDocument.numPages;\n const viewport = firstPdfPage.getViewport({ scale: 1 });\n const checkSetImageDisabled = () => {\n return this._setImageDisabled;\n };\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const thumbnail = new PDFThumbnailView({\n container: this.container,\n id: pageNum,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n linkService: this.linkService,\n renderingQueue: this.renderingQueue,\n checkSetImageDisabled,\n l10n: this.l10n,\n });\n this._thumbnails.push(thumbnail);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstThumbnailView = this._thumbnails[0];\n if (firstThumbnailView) {\n firstThumbnailView.setPdfPage(firstPdfPage);\n }\n\n // Ensure that the current thumbnail is always highlighted on load.\n const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n })\n .catch(reason => {\n console.error(\"Unable to initialize thumbnail viewer\", reason);\n });\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (this._thumbnails[i]) {\n this._thumbnails[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\");\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFThumbnailView` instances.\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n /**\n * @param {PDFThumbnailView} thumbView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(thumbView) {\n if (thumbView.pdfPage) {\n return thumbView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(thumbView.id);\n if (!thumbView.pdfPage) {\n thumbView.setPdfPage(pdfPage);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for thumb view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this._thumbnails.length) {\n return false;\n }\n return this.scroll.down;\n }\n\n forceRendering() {\n const visibleThumbs = this._getVisibleThumbs();\n const scrollAhead = this.#getScrollAhead(visibleThumbs);\n const thumbView = this.renderingQueue.getHighestPriority(\n visibleThumbs,\n this._thumbnails,\n scrollAhead\n );\n if (thumbView) {\n this.#ensurePdfPageLoaded(thumbView).then(() => {\n this.renderingQueue.renderView(thumbView);\n });\n return true;\n }\n return false;\n }\n}\n\nexport { PDFThumbnailViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport { OutputScale, RenderingStates } from \"./ui_utils.js\";\nimport { RenderingCancelledException } from \"pdfjs-lib\";\n\nconst DRAW_UPSCALE_FACTOR = 2; // See comment in `PDFThumbnailView.draw` below.\nconst MAX_NUM_SCALING_STEPS = 3;\nconst THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px\nconst THUMBNAIL_WIDTH = 98; // px\n\n/**\n * @typedef {Object} PDFThumbnailViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {number} id - The thumbnail's unique ID (normally its number).\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {function} checkSetImageDisabled\n * @property {IL10n} l10n - Localization service.\n */\n\nclass TempImageFactory {\n static #tempCanvas = null;\n\n static getCanvas(width, height) {\n const tempCanvas = (this.#tempCanvas ||= document.createElement(\"canvas\"));\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n // Since this is a temporary canvas, we need to fill it with a white\n // background ourselves. `_getPageDrawContext` uses CSS rules for this.\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n tempCanvas.mozOpaque = true;\n }\n\n const ctx = tempCanvas.getContext(\"2d\", { alpha: false });\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n return [tempCanvas, tempCanvas.getContext(\"2d\")];\n }\n\n static destroyCanvas() {\n const tempCanvas = this.#tempCanvas;\n if (tempCanvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tempCanvas.width = 0;\n tempCanvas.height = 0;\n }\n this.#tempCanvas = null;\n }\n}\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFThumbnailView {\n /**\n * @param {PDFThumbnailViewOptions} options\n */\n constructor({\n container,\n id,\n defaultViewport,\n optionalContentConfigPromise,\n linkService,\n renderingQueue,\n checkSetImageDisabled,\n l10n,\n }) {\n this.id = id;\n this.renderingId = \"thumbnail\" + id;\n this.pageLabel = null;\n\n this.pdfPage = null;\n this.rotation = 0;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise = optionalContentConfigPromise || null;\n\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n\n this.renderTask = null;\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._checkSetImageDisabled =\n checkSetImageDisabled ||\n function () {\n return false;\n };\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasWidth = THUMBNAIL_WIDTH;\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.l10n = l10n;\n\n const anchor = document.createElement(\"a\");\n anchor.href = linkService.getAnchorUrl(\"#page=\" + id);\n this._thumbPageTitle.then(msg => {\n anchor.title = msg;\n });\n anchor.onclick = function () {\n linkService.goToPage(id);\n return false;\n };\n this.anchor = anchor;\n\n const div = document.createElement(\"div\");\n div.className = \"thumbnail\";\n div.setAttribute(\"data-page-number\", this.id);\n this.div = div;\n\n const ring = document.createElement(\"div\");\n ring.className = \"thumbnailSelectionRing\";\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n this.ring = ring;\n\n div.appendChild(ring);\n anchor.appendChild(div);\n container.appendChild(anchor);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\n this.reset();\n }\n\n reset() {\n this.cancelRendering();\n this.renderingState = RenderingStates.INITIAL;\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.div.removeAttribute(\"data-loaded\");\n const ring = this.ring;\n ring.textContent = \"\"; // Remove the thumbnail from the DOM.\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n\n if (this.canvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n if (this.image) {\n this.image.removeAttribute(\"src\");\n delete this.image;\n }\n }\n\n update({ rotation = null }) {\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: 1,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering() {\n if (this.renderTask) {\n this.renderTask.cancel();\n this.renderTask = null;\n }\n this.resume = null;\n }\n\n /**\n * @private\n */\n _getPageDrawContext(upscaleFactor = 1) {\n // Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\n // until rendering/image conversion is complete, to avoid display issues.\n const canvas = document.createElement(\"canvas\");\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = new OutputScale();\n\n canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;\n canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;\n\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n\n return { ctx, canvas, transform };\n }\n\n /**\n * @private\n */\n _convertCanvasToImage(canvas) {\n if (this.renderingState !== RenderingStates.FINISHED) {\n throw new Error(\"_convertCanvasToImage: Rendering has not finished.\");\n }\n const reducedCanvas = this._reduceImage(canvas);\n\n const image = document.createElement(\"img\");\n image.className = \"thumbnailImage\";\n this._thumbPageCanvas.then(msg => {\n image.setAttribute(\"aria-label\", msg);\n });\n image.style.width = this.canvasWidth + \"px\";\n image.style.height = this.canvasHeight + \"px\";\n\n image.src = reducedCanvas.toDataURL();\n this.image = image;\n\n this.div.setAttribute(\"data-loaded\", true);\n this.ring.appendChild(image);\n\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n reducedCanvas.width = 0;\n reducedCanvas.height = 0;\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n return Promise.resolve();\n }\n const { pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n const finishRenderTask = async (error = null) => {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n return;\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n\n if (error) {\n throw error;\n }\n };\n\n // Render the thumbnail at a larger size and downsize the canvas (similar\n // to `setImage`), to improve consistency between thumbnails created by\n // the `draw` and `setImage` methods (fixes issue 8233).\n // NOTE: To primarily avoid increasing memory usage too much, but also to\n // reduce downsizing overhead, we purposely limit the up-scaling factor.\n const { ctx, canvas, transform } =\n this._getPageDrawContext(DRAW_UPSCALE_FACTOR);\n const drawViewport = this.viewport.clone({\n scale: DRAW_UPSCALE_FACTOR * this.scale,\n });\n const renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: drawViewport,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n };\n const renderTask = (this.renderTask = pdfPage.render(renderContext));\n renderTask.onContinue = renderContinueCallback;\n\n const resultPromise = renderTask.promise.then(\n function () {\n return finishRenderTask(null);\n },\n function (error) {\n return finishRenderTask(error);\n }\n );\n resultPromise.finally(() => {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n\n // Only trigger cleanup, once rendering has finished, when the current\n // pageView is *not* cached on the `BaseViewer`-instance.\n const pageCached = this.linkService.isPageCached(this.id);\n if (!pageCached) {\n this.pdfPage?.cleanup();\n }\n });\n\n return resultPromise;\n }\n\n setImage(pageView) {\n if (this._checkSetImageDisabled()) {\n return;\n }\n if (this.renderingState !== RenderingStates.INITIAL) {\n return;\n }\n const { canvas, pdfPage } = pageView;\n if (!canvas) {\n return;\n }\n if (!this.pdfPage) {\n this.setPdfPage(pdfPage);\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n }\n\n /**\n * @private\n */\n _reduceImage(img) {\n const { ctx, canvas } = this._getPageDrawContext();\n\n if (img.width <= 2 * canvas.width) {\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n // drawImage does an awful job of rescaling the image, doing it gradually.\n let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\n reducedWidth,\n reducedHeight\n );\n\n while (reducedWidth > img.width || reducedHeight > img.height) {\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n reducedImageCtx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n reducedWidth,\n reducedHeight\n );\n while (reducedWidth > 2 * canvas.width) {\n reducedImageCtx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n reducedWidth >> 1,\n reducedHeight >> 1\n );\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n ctx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n\n get _thumbPageTitle() {\n return this.l10n.get(\"thumb_page_title\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n get _thumbPageCanvas() {\n return this.l10n.get(\"thumb_page_canvas\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n this._thumbPageTitle.then(msg => {\n this.anchor.title = msg;\n });\n\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n\n this._thumbPageCanvas.then(msg => {\n this.image?.setAttribute(\"aria-label\", msg);\n });\n }\n}\n\nexport { PDFThumbnailView, TempImageFactory };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { BaseViewer } from \"./base_viewer.js\";\n\nclass PDFViewer extends BaseViewer {}\n\nclass PDFSinglePageViewer extends BaseViewer {\n _resetView() {\n super._resetView();\n this._scrollMode = ScrollMode.PAGE;\n this._spreadMode = SpreadMode.NONE;\n }\n\n // eslint-disable-next-line accessor-pairs\n set scrollMode(mode) {}\n\n _updateScrollMode() {}\n\n // eslint-disable-next-line accessor-pairs\n set spreadMode(mode) {}\n\n _updateSpreadMode() {}\n}\n\nexport { PDFSinglePageViewer, PDFViewer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFXfaLayerFactory} IPDFXfaLayerFactory */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PermissionFlag,\n PixelsPerInch,\n version,\n} from \"pdfjs-lib\";\nimport {\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n PresentationModeState,\n RendererType,\n RenderingStates,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { AnnotationLayerBuilder } from \"./annotation_layer_builder.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\nimport { PDFPageView } from \"./pdf_page_view.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { StructTreeLayerBuilder } from \"./struct_tree_layer_builder.js\";\nimport { TextHighlighter } from \"./text_highlighter.js\";\nimport { TextLayerBuilder } from \"./text_layer_builder.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nconst DEFAULT_CACHE_SIZE = 10;\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst PagesCountLimit = {\n FORCE_SCROLL_MODE_PAGE: 15000,\n FORCE_LAZY_PAGE_INIT: 7500,\n PAUSE_EAGER_PAGE_INIT: 250,\n};\n\n/**\n * @typedef {Object} PDFViewerOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} [viewer] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {IDownloadManager} [downloadManager] - The download manager\n * component.\n * @property {PDFFindController} [findController] - The find controller\n * component.\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\n * component.\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\n * @property {boolean} [removePageBorders] - Removes the border shadow around\n * the pages. The default value is `false`.\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\n * landscape pages upon printing. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\n * when they exist. The default value is `false`.\n */\n\nclass PDFPageViewBuffer {\n // Here we rely on the fact that `Set`s preserve the insertion order.\n #buf = new Set();\n\n #size = 0;\n\n constructor(size) {\n this.#size = size;\n }\n\n push(view) {\n const buf = this.#buf;\n if (buf.has(view)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n }\n buf.add(view);\n\n if (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n /**\n * After calling resize, the size of the buffer will be `newSize`.\n * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\n * push to the back of the buffer, delaying their destruction. The size of\n * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\n * is larger than `newSize`, some of those pages will be destroyed anyway.\n */\n resize(newSize, idsToKeep = null) {\n this.#size = newSize;\n\n const buf = this.#buf;\n if (idsToKeep) {\n const ii = buf.size;\n let i = 1;\n for (const view of buf) {\n if (idsToKeep.has(view.id)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n buf.add(view);\n }\n if (++i > ii) {\n break;\n }\n }\n }\n\n while (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n has(view) {\n return this.#buf.has(view);\n }\n\n [Symbol.iterator]() {\n return this.#buf.keys();\n }\n\n #destroyFirstView() {\n const firstView = this.#buf.keys().next().value;\n\n firstView?.destroy();\n this.#buf.delete(firstView);\n }\n}\n\n/**\n * Simple viewer control to display PDF content/pages.\n *\n * @implements {IPDFAnnotationLayerFactory}\n * @implements {IPDFStructTreeLayerFactory}\n * @implements {IPDFTextLayerFactory}\n * @implements {IPDFXfaLayerFactory}\n */\nclass BaseViewer {\n #buffer = null;\n\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n #previousAnnotationMode = null;\n\n #enablePermissions = false;\n\n #previousContainerHeight = 0;\n\n #scrollModePageState = null;\n\n #onVisibilityChange = null;\n\n /**\n * @param {PDFViewerOptions} options\n */\n constructor(options) {\n if (this.constructor === BaseViewer) {\n throw new Error(\"Cannot initialize BaseViewer.\");\n }\n const viewerVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n if (version !== viewerVersion) {\n throw new Error(\n `The API version \"${version}\" does not match the Viewer version \"${viewerVersion}\".`\n );\n }\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (\n !(\n this.container?.tagName.toUpperCase() === \"DIV\" &&\n this.viewer?.tagName.toUpperCase() === \"DIV\"\n )\n ) {\n throw new Error(\"Invalid `container` and/or `viewer` option.\");\n }\n\n if (\n this.container.offsetParent &&\n getComputedStyle(this.container).position !== \"absolute\"\n ) {\n throw new Error(\"The `container` must be absolutely positioned.\");\n }\n }\n this.eventBus = options.eventBus;\n this.linkService = options.linkService || new SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.findController = options.findController || null;\n this._scriptingManager = options.scriptingManager || null;\n this.removePageBorders = options.removePageBorders || false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels;\n this.l10n = options.l10n || NullL10n;\n this.#enablePermissions = options.enablePermissions || false;\n\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n // Custom rendering queue is not specified, using default one\n this.renderingQueue = new PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n this._doc = document.documentElement;\n\n this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = PresentationModeState.UNKNOWN;\n this._onBeforeDraw = this._onAfterDraw = null;\n this._resetView();\n\n if (this.removePageBorders) {\n this.viewer.classList.add(\"removePageBorders\");\n }\n // Defer the dispatching of this event, to give other viewer components\n // time to initialize *and* register 'baseviewerinit' event listeners.\n Promise.resolve().then(() => {\n this.eventBus.dispatch(\"baseviewerinit\", { source: this });\n });\n }\n\n get pagesCount() {\n return this._pages.length;\n }\n\n getPageView(index) {\n return this._pages[index];\n }\n\n /**\n * @type {boolean} - True if all {PDFPageView} objects are initialized.\n */\n get pageViewsReady() {\n if (!this._pagesCapability.settled) {\n return false;\n }\n // Prevent printing errors when 'disableAutoFetch' is set, by ensuring\n // that *all* pages have in fact been completely loaded.\n return this._pages.every(function (pageView) {\n return pageView?.pdfPage;\n });\n }\n\n /**\n * @type {boolean}\n */\n get renderForms() {\n return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\n }\n\n /**\n * @type {boolean}\n */\n get enableScripting() {\n return !!this._scriptingManager;\n }\n\n /**\n * @type {number}\n */\n get currentPageNumber() {\n return this._currentPageNumber;\n }\n\n /**\n * @param {number} val - The page number.\n */\n set currentPageNumber(val) {\n if (!Number.isInteger(val)) {\n throw new Error(\"Invalid page number.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageNumber: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @returns {boolean} Whether the pageNumber is valid (within bounds).\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n if (!(0 < val && val <= this.pagesCount)) {\n return false;\n }\n const previous = this._currentPageNumber;\n this._currentPageNumber = val;\n\n this.eventBus.dispatch(\"pagechanging\", {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels?.[val - 1] ?? null,\n previous,\n });\n\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return true;\n }\n\n /**\n * @type {string|null} Returns the current page label, or `null` if no page\n * labels exist.\n */\n get currentPageLabel() {\n return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\n }\n\n /**\n * @param {string} val - The page label.\n */\n set currentPageLabel(val) {\n if (!this.pdfDocument) {\n return;\n }\n let page = val | 0; // Fallback page number.\n if (this._pageLabels) {\n const i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n page = i + 1;\n }\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(page, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageLabel: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @type {number}\n */\n get currentScale() {\n return this._currentScale !== UNKNOWN_SCALE\n ? this._currentScale\n : DEFAULT_SCALE;\n }\n\n /**\n * @param {number} val - Scale of the pages in percents.\n */\n set currentScale(val) {\n if (isNaN(val)) {\n throw new Error(\"Invalid numeric scale.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {string}\n */\n get currentScaleValue() {\n return this._currentScaleValue;\n }\n\n /**\n * @param val - The scale of the pages (in percent or predefined value).\n */\n set currentScaleValue(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {number}\n */\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n /**\n * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\n */\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid pages rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const pageNumber = this._currentPageNumber;\n\n const updateArgs = { rotation };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n // Prevent errors in case the rotation changes *before* the scale has been\n // set to a non-default value.\n if (this._currentScaleValue) {\n this._setScale(this._currentScaleValue, true);\n }\n\n this.eventBus.dispatch(\"rotationchanging\", {\n source: this,\n pagesRotation: rotation,\n pageNumber,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n get firstPagePromise() {\n return this.pdfDocument ? this._firstPageCapability.promise : null;\n }\n\n get onePageRendered() {\n return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\n }\n\n get pagesPromise() {\n return this.pdfDocument ? this._pagesCapability.promise : null;\n }\n\n /**\n * Currently only *some* permissions are supported.\n */\n #initializePermissions(permissions) {\n if (!permissions) {\n return;\n }\n\n if (!permissions.includes(PermissionFlag.COPY)) {\n this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS);\n }\n\n if (\n !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\n !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS)\n ) {\n if (this.#annotationMode === AnnotationMode.ENABLE_FORMS) {\n this.#previousAnnotationMode = this.#annotationMode; // Allow resetting.\n this.#annotationMode = AnnotationMode.ENABLE;\n }\n }\n }\n\n #onePageRenderedOrForceFetch() {\n // Unless the viewer *and* its pages are visible, rendering won't start and\n // `this._onePageRenderedCapability` thus won't be resolved.\n // To ensure that automatic printing, on document load, still works even in\n // those cases we force-allow fetching of all pages when:\n // - The current window/tab is inactive, which will prevent rendering since\n // `requestAnimationFrame` is being used; fixes bug 1746213.\n // - The viewer is hidden in the DOM, e.g. in a `display: none` <iframe>\n // element; fixes bug 1618621.\n // - The viewer is visible, but none of the pages are (e.g. if the\n // viewer is very small); fixes bug 1618955.\n if (\n document.visibilityState === \"hidden\" ||\n !this.container.offsetParent ||\n this._getVisiblePages().views.length === 0\n ) {\n return Promise.resolve();\n }\n\n // Handle the window/tab becoming inactive *after* rendering has started;\n // fixes (another part of) bug 1746213.\n const visibilityChangePromise = new Promise(resolve => {\n this.#onVisibilityChange = () => {\n if (document.visibilityState !== \"hidden\") {\n return;\n }\n resolve();\n\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n };\n document.addEventListener(\"visibilitychange\", this.#onVisibilityChange);\n });\n\n return Promise.race([\n this._onePageRenderedCapability.promise,\n visibilityChangePromise,\n ]);\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this.eventBus.dispatch(\"pagesdestroy\", { source: this });\n\n this._cancelRendering();\n this._resetView();\n\n if (this.findController) {\n this.findController.setDocument(null);\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(null);\n }\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const isPureXfa = pdfDocument.isPureXfa;\n const pagesCount = pdfDocument.numPages;\n const firstPagePromise = pdfDocument.getPage(1);\n // Rendering (potentially) depends on this, hence fetching it immediately.\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n const permissionsPromise = this.#enablePermissions\n ? pdfDocument.getPermissions()\n : Promise.resolve();\n\n // Given that browsers don't handle huge amounts of DOM-elements very well,\n // enforce usage of PAGE-scrolling when loading *very* long/large documents.\n if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n console.warn(\n \"Forcing PAGE-scrolling for performance reasons, given the length of the document.\"\n );\n const mode = (this._scrollMode = ScrollMode.PAGE);\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n }\n\n this._pagesCapability.promise.then(\n () => {\n this.eventBus.dispatch(\"pagesloaded\", { source: this, pagesCount });\n },\n () => {\n /* Prevent \"Uncaught (in promise)\"-messages in the console. */\n }\n );\n\n this._onBeforeDraw = evt => {\n const pageView = this._pages[evt.pageNumber - 1];\n if (!pageView) {\n return;\n }\n // Add the page to the buffer at the start of drawing. That way it can be\n // evicted from the buffer and destroyed even if we pause its rendering.\n this.#buffer.push(pageView);\n };\n this.eventBus._on(\"pagerender\", this._onBeforeDraw);\n\n this._onAfterDraw = evt => {\n if (evt.cssTransform || this._onePageRenderedCapability.settled) {\n return;\n }\n this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\n\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n };\n this.eventBus._on(\"pagerendered\", this._onAfterDraw);\n\n // Fetch a single page so we can get a viewport that will be the default\n // viewport for all pages\n Promise.all([firstPagePromise, permissionsPromise])\n .then(([firstPdfPage, permissions]) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the first page resolved.\n }\n this._firstPageCapability.resolve(firstPdfPage);\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n this.#initializePermissions(permissions);\n\n const viewerElement =\n this._scrollMode === ScrollMode.PAGE ? null : this.viewer;\n const scale = this.currentScale;\n const viewport = firstPdfPage.getViewport({\n scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const textLayerFactory =\n this.textLayerMode !== TextLayerMode.DISABLE && !isPureXfa\n ? this\n : null;\n const annotationLayerFactory =\n this.#annotationMode !== AnnotationMode.DISABLE ? this : null;\n const xfaLayerFactory = isPureXfa ? this : null;\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const pageView = new PDFPageView({\n container: viewerElement,\n eventBus: this.eventBus,\n id: pageNum,\n scale,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n renderingQueue: this.renderingQueue,\n textLayerFactory,\n textLayerMode: this.textLayerMode,\n annotationLayerFactory,\n annotationMode: this.#annotationMode,\n xfaLayerFactory,\n textHighlighterFactory: this,\n structTreeLayerFactory: this,\n imageResourcesPath: this.imageResourcesPath,\n renderer: this.renderer,\n useOnlyCssZoom: this.useOnlyCssZoom,\n maxCanvasPixels: this.maxCanvasPixels,\n l10n: this.l10n,\n });\n this._pages.push(pageView);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstPageView = this._pages[0];\n if (firstPageView) {\n firstPageView.setPdfPage(firstPdfPage);\n this.linkService.cachePageRef(1, firstPdfPage.ref);\n }\n\n if (this._scrollMode === ScrollMode.PAGE) {\n // Ensure that the current page becomes visible on document load.\n this.#ensurePageViewVisible();\n } else if (this._spreadMode !== SpreadMode.NONE) {\n this._updateSpreadMode();\n }\n\n // Fetch all the pages since the viewport is needed before printing\n // starts to create the correct size canvas. Wait until one page is\n // rendered so we don't tie up too many resources early on.\n this.#onePageRenderedOrForceFetch().then(async () => {\n if (this.findController) {\n this.findController.setDocument(pdfDocument); // Enable searching.\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(pdfDocument); // Enable scripting.\n }\n\n // In addition to 'disableAutoFetch' being set, also attempt to reduce\n // resource usage when loading *very* long/large documents.\n if (\n pdfDocument.loadingParams.disableAutoFetch ||\n pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\n ) {\n // XXX: Printing is semi-broken with auto fetch disabled.\n this._pagesCapability.resolve();\n return;\n }\n let getPagesLeft = pagesCount - 1; // The first page was already loaded.\n\n if (getPagesLeft <= 0) {\n this._pagesCapability.resolve();\n return;\n }\n for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {\n const promise = pdfDocument.getPage(pageNum).then(\n pdfPage => {\n const pageView = this._pages[pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this.linkService.cachePageRef(pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n },\n reason => {\n console.error(\n `Unable to get page ${pageNum} to initialize viewer`,\n reason\n );\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n }\n );\n\n if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\n await promise;\n }\n }\n });\n\n this.eventBus.dispatch(\"pagesinit\", { source: this });\n\n pdfDocument.getMetadata().then(({ info }) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n if (info.Language) {\n this.viewer.lang = info.Language;\n }\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n })\n .catch(reason => {\n console.error(\"Unable to initialize viewer\", reason);\n\n this._pagesCapability.reject(reason);\n });\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(`setPageLabels: Invalid page labels.`);\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFPageView` instances.\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._firstPageCapability = createPromiseCapability();\n this._onePageRenderedCapability = createPromiseCapability();\n this._pagesCapability = createPromiseCapability();\n this._scrollMode = ScrollMode.VERTICAL;\n this._previousScrollMode = ScrollMode.UNKNOWN;\n this._spreadMode = SpreadMode.NONE;\n\n this.#scrollModePageState = {\n previousPageNumber: 1,\n scrollDown: true,\n pages: [],\n };\n\n if (this._onBeforeDraw) {\n this.eventBus._off(\"pagerender\", this._onBeforeDraw);\n this._onBeforeDraw = null;\n }\n if (this._onAfterDraw) {\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n }\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n // Remove the pages from the DOM...\n this.viewer.textContent = \"\";\n // ... and reset the Scroll mode CSS class(es) afterwards.\n this._updateScrollMode();\n\n this.viewer.removeAttribute(\"lang\");\n // Reset all PDF document permissions.\n this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS);\n\n if (this.#previousAnnotationMode !== null) {\n this.#annotationMode = this.#previousAnnotationMode;\n this.#previousAnnotationMode = null;\n }\n }\n\n #ensurePageViewVisible() {\n if (this._scrollMode !== ScrollMode.PAGE) {\n throw new Error(\"#ensurePageViewVisible: Invalid scrollMode value.\");\n }\n const pageNumber = this._currentPageNumber,\n state = this.#scrollModePageState,\n viewer = this.viewer;\n\n // Temporarily remove all the pages from the DOM...\n viewer.textContent = \"\";\n // ... and clear out the active ones.\n state.pages.length = 0;\n\n if (this._spreadMode === SpreadMode.NONE) {\n // Finally, append the new page to the viewer.\n const pageView = this._pages[pageNumber - 1];\n\n if (this.isInPresentationMode) {\n const spread = document.createElement(\"div\");\n spread.className = \"spread\";\n const dummyPage = document.createElement(\"div\");\n dummyPage.className = \"dummyPage\";\n dummyPage.style.height = `${this.container.clientHeight}px`;\n\n spread.appendChild(dummyPage);\n spread.appendChild(pageView.div);\n viewer.appendChild(spread);\n } else {\n viewer.appendChild(pageView.div);\n }\n\n state.pages.push(pageView);\n } else {\n const pageIndexSet = new Set(),\n parity = this._spreadMode - 1;\n\n // Determine the pageIndices in the new spread.\n if (pageNumber % 2 !== parity) {\n // Left-hand side page.\n pageIndexSet.add(pageNumber - 1);\n pageIndexSet.add(pageNumber);\n } else {\n // Right-hand side page.\n pageIndexSet.add(pageNumber - 2);\n pageIndexSet.add(pageNumber - 1);\n }\n\n // Finally, append the new pages to the viewer and apply the spreadMode.\n let spread = null;\n for (const i of pageIndexSet) {\n const pageView = this._pages[i];\n if (!pageView) {\n continue;\n }\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pageView.div);\n\n state.pages.push(pageView);\n }\n }\n\n state.scrollDown = pageNumber >= state.previousPageNumber;\n state.previousPageNumber = pageNumber;\n }\n\n _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n\n _scrollIntoView({ pageDiv, pageSpot = null, pageNumber = null }) {\n if (this._scrollMode === ScrollMode.PAGE) {\n if (pageNumber) {\n // Ensure that `this._currentPageNumber` is correct.\n this._setCurrentPageNumber(pageNumber);\n }\n this.#ensurePageViewVisible();\n // Ensure that rendering always occurs, to avoid showing a blank page,\n // even if the current position doesn't change when the page is scrolled.\n this.update();\n }\n\n if (!pageSpot && !this.isInPresentationMode) {\n const left = pageDiv.offsetLeft + pageDiv.clientLeft;\n const right = left + pageDiv.clientWidth;\n const { scrollLeft, clientWidth } = this.container;\n if (\n this._scrollMode === ScrollMode.HORIZONTAL ||\n left < scrollLeft ||\n right > scrollLeft + clientWidth\n ) {\n pageSpot = { left: 0, top: 0 };\n }\n }\n scrollIntoView(pageDiv, pageSpot);\n }\n\n /**\n * Prevent unnecessary re-rendering of all pages when the scale changes\n * only because of limited numerical precision.\n */\n #isSameScale(newScale) {\n if (\n this.isInPresentationMode &&\n this.container.clientHeight !== this.#previousContainerHeight\n ) {\n // Ensure that the current page remains centered vertically if/when\n // the window is resized while PresentationMode is active.\n return false;\n }\n return (\n newScale === this._currentScale ||\n Math.abs(newScale - this._currentScale) < 1e-15\n );\n }\n\n _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {\n this._currentScaleValue = newValue.toString();\n\n if (this.#isSameScale(newScale)) {\n if (preset) {\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: newValue,\n });\n }\n return;\n }\n\n this._doc.style.setProperty(\"--zoom-factor\", newScale);\n this._doc.style.setProperty(\n \"--viewport-scale-factor\",\n newScale * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n\n const updateArgs = { scale: newScale };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this._currentScale = newScale;\n\n if (!noScroll) {\n let page = this._currentPageNumber,\n dest;\n if (\n this._location &&\n !(this.isInPresentationMode || this.isChangingPresentationMode)\n ) {\n page = this._location.pageNumber;\n dest = [\n null,\n { name: \"XYZ\" },\n this._location.left,\n this._location.top,\n null,\n ];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n\n this.#previousContainerHeight = this.container.clientHeight;\n }\n\n /**\n * @private\n */\n get _pageWidthScaleFactor() {\n if (\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL\n ) {\n return 2;\n }\n return 1;\n }\n\n _setScale(value, noScroll = false) {\n let scale = parseFloat(value);\n\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ false);\n } else {\n const currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n let hPadding = SCROLLBAR_PADDING,\n vPadding = VERTICAL_PADDING;\n\n if (this.isInPresentationMode) {\n hPadding = vPadding = 4;\n } else if (this.removePageBorders) {\n hPadding = vPadding = 0;\n }\n if (this._scrollMode === ScrollMode.HORIZONTAL) {\n [hPadding, vPadding] = [vPadding, hPadding]; // Swap the padding values.\n }\n const pageWidthScale =\n (((this.container.clientWidth - hPadding) / currentPage.width) *\n currentPage.scale) /\n this._pageWidthScaleFactor;\n const pageHeightScale =\n ((this.container.clientHeight - vPadding) / currentPage.height) *\n currentPage.scale;\n switch (value) {\n case \"page-actual\":\n scale = 1;\n break;\n case \"page-width\":\n scale = pageWidthScale;\n break;\n case \"page-height\":\n scale = pageHeightScale;\n break;\n case \"page-fit\":\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case \"auto\":\n // For pages in landscape mode, fit the page height to the viewer\n // *unless* the page would thus become too wide to fit horizontally.\n const horizontalScale = isPortraitOrientation(currentPage)\n ? pageWidthScale\n : Math.min(pageHeightScale, pageWidthScale);\n scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(`_setScale: \"${value}\" is an unknown zoom value.`);\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ true);\n }\n }\n\n /**\n * Refreshes page view: scrolls to the current page and updates the scale.\n * @private\n */\n _resetCurrentPageView() {\n if (this.isInPresentationMode) {\n // Fixes the case when PDF has different page sizes.\n this._setScale(this._currentScaleValue, true);\n }\n\n const pageView = this._pages[this._currentPageNumber - 1];\n this._scrollIntoView({ pageDiv: pageView.div });\n }\n\n /**\n * @param {string} label - The page label.\n * @returns {number|null} The page number corresponding to the page label,\n * or `null` when no page labels exist and/or the input is invalid.\n */\n pageLabelToPageNumber(label) {\n if (!this._pageLabels) {\n return null;\n }\n const i = this._pageLabels.indexOf(label);\n if (i < 0) {\n return null;\n }\n return i + 1;\n }\n\n /**\n * @typedef ScrollPageIntoViewParameters\n * @property {number} pageNumber - The page number.\n * @property {Array} [destArray] - The original PDF destination array, in the\n * format: <page-ref> </XYZ|/FitXXX> <args..>\n * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\n * The default value is `false`.\n * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\n * the destination array. The default value is `false`.\n */\n\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView({\n pageNumber,\n destArray = null,\n allowNegativeOffset = false,\n ignoreDestinationZoom = false,\n }) {\n if (!this.pdfDocument) {\n return;\n }\n const pageView =\n Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(\n `scrollPageIntoView: \"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n\n if (this.isInPresentationMode || !destArray) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n let x = 0,\n y = 0;\n let width = 0,\n height = 0,\n widthScale,\n heightScale;\n const changeOrientation = pageView.rotation % 180 !== 0;\n const pageWidth =\n (changeOrientation ? pageView.height : pageView.width) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n const pageHeight =\n (changeOrientation ? pageView.width : pageView.height) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n let scale = 0;\n switch (destArray[1].name) {\n case \"XYZ\":\n x = destArray[2];\n y = destArray[3];\n scale = destArray[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case \"Fit\":\n case \"FitB\":\n scale = \"page-fit\";\n break;\n case \"FitH\":\n case \"FitBH\":\n y = destArray[2];\n scale = \"page-width\";\n // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // parameter should maintain the position relative to the new page.\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n } else if (typeof y !== \"number\" || y < 0) {\n // The \"top\" value isn't optional, according to the spec, however some\n // bad PDF generators will pretend that it is (fixes bug 1663390).\n y = pageHeight;\n }\n break;\n case \"FitV\":\n case \"FitBV\":\n x = destArray[2];\n width = pageWidth;\n height = pageHeight;\n scale = \"page-height\";\n break;\n case \"FitR\":\n x = destArray[2];\n y = destArray[3];\n width = destArray[4] - x;\n height = destArray[5] - y;\n const hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING;\n const vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING;\n\n widthScale =\n (this.container.clientWidth - hPadding) /\n width /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n heightScale =\n (this.container.clientHeight - vPadding) /\n height /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(\n `scrollPageIntoView: \"${destArray[1].name}\" is not a valid destination type.`\n );\n return;\n }\n\n if (!ignoreDestinationZoom) {\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === UNKNOWN_SCALE) {\n this.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n }\n\n if (scale === \"page-fit\" && !destArray[4]) {\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageNumber,\n });\n return;\n }\n\n const boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height),\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageSpot: { left, top },\n pageNumber,\n });\n }\n\n _updateLocation(firstPage) {\n const currentScale = this._currentScale;\n const currentScaleValue = this._currentScaleValue;\n const normalizedScaleValue =\n parseFloat(currentScaleValue) === currentScale\n ? Math.round(currentScale * 10000) / 100\n : currentScaleValue;\n\n const pageNumber = firstPage.id;\n let pdfOpenParams = \"#page=\" + pageNumber;\n pdfOpenParams += \"&zoom=\" + normalizedScaleValue;\n const currentPageView = this._pages[pageNumber - 1];\n const container = this.container;\n const topLeft = currentPageView.getPagePoint(\n container.scrollLeft - firstPage.x,\n container.scrollTop - firstPage.y\n );\n const intLeft = Math.round(topLeft[0]);\n const intTop = Math.round(topLeft[1]);\n pdfOpenParams += \",\" + intLeft + \",\" + intTop;\n\n this._location = {\n pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n rotation: this._pagesRotation,\n pdfOpenParams,\n };\n }\n\n update() {\n const visible = this._getVisiblePages();\n const visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n\n if (numVisiblePages === 0) {\n return;\n }\n const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n this.#buffer.resize(newCacheSize, visible.ids);\n\n this.renderingQueue.renderHighestPriority(visible);\n\n if (!this.isInPresentationMode) {\n const isSimpleLayout =\n this._spreadMode === SpreadMode.NONE &&\n (this._scrollMode === ScrollMode.PAGE ||\n this._scrollMode === ScrollMode.VERTICAL);\n let currentId = this._currentPageNumber;\n let stillFullyVisible = false;\n\n for (const page of visiblePages) {\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId && isSimpleLayout) {\n stillFullyVisible = true;\n break;\n }\n }\n if (!stillFullyVisible) {\n currentId = visiblePages[0].id;\n }\n this._setCurrentPageNumber(currentId);\n }\n\n this._updateLocation(visible.first);\n this.eventBus.dispatch(\"updateviewarea\", {\n source: this,\n location: this._location,\n });\n }\n\n containsElement(element) {\n return this.container.contains(element);\n }\n\n focus() {\n this.container.focus();\n }\n\n get _isContainerRtl() {\n return getComputedStyle(this.container).direction === \"rtl\";\n }\n\n get isInPresentationMode() {\n return this.presentationModeState === PresentationModeState.FULLSCREEN;\n }\n\n get isChangingPresentationMode() {\n return this.presentationModeState === PresentationModeState.CHANGING;\n }\n\n get isHorizontalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollWidth > this.container.clientWidth;\n }\n\n get isVerticalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollHeight > this.container.clientHeight;\n }\n\n /**\n * Helper method for `this._getVisiblePages`. Should only ever be used when\n * the viewer can only display a single page at a time, for example:\n * - When PresentationMode is active.\n */\n _getCurrentVisiblePage() {\n if (!this.pagesCount) {\n return { views: [] };\n }\n const pageView = this._pages[this._currentPageNumber - 1];\n // NOTE: Compute the `x` and `y` properties of the current view,\n // since `this._updateLocation` depends of them being available.\n const element = pageView.div;\n\n const view = {\n id: pageView.id,\n x: element.offsetLeft + element.clientLeft,\n y: element.offsetTop + element.clientTop,\n view: pageView,\n };\n const ids = new Set([pageView.id]);\n\n return { first: view, last: view, views: [view], ids };\n }\n\n _getVisiblePages() {\n if (this.isInPresentationMode) {\n // The algorithm in `getVisibleElements` doesn't work in all browsers and\n // configurations (e.g. Chrome) when PresentationMode is active.\n return this._getCurrentVisiblePage();\n }\n const views =\n this._scrollMode === ScrollMode.PAGE\n ? this.#scrollModePageState.pages\n : this._pages,\n horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\n rtl = horizontal && this._isContainerRtl;\n\n return getVisibleElements({\n scrollEl: this.container,\n views,\n sortByVisibility: true,\n horizontal,\n rtl,\n });\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageVisible: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n return this._getVisiblePages().ids.has(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageCached: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n const pageView = this._pages[pageNumber - 1];\n return this.#buffer.has(pageView);\n }\n\n cleanup() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (\n this._pages[i] &&\n this._pages[i].renderingState !== RenderingStates.FINISHED\n ) {\n this._pages[i].reset();\n }\n }\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i]) {\n this._pages[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {PDFPageView} pageView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(pageView) {\n if (pageView.pdfPage) {\n return pageView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(pageView.id);\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {\n this.linkService.cachePageRef(pageView.id, pdfPage.ref);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for page view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this.pagesCount) {\n return false;\n }\n switch (this._scrollMode) {\n case ScrollMode.PAGE:\n return this.#scrollModePageState.scrollDown;\n case ScrollMode.HORIZONTAL:\n return this.scroll.right;\n }\n return this.scroll.down;\n }\n\n /**\n * Only show the `loadingIcon`-spinner on visible pages (see issue 14242).\n */\n #toggleLoadingIconSpinner(visibleIds) {\n for (const id of visibleIds) {\n const pageView = this._pages[id - 1];\n pageView?.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n for (const pageView of this.#buffer) {\n if (visibleIds.has(pageView.id)) {\n // Handled above, since the \"buffer\" may not contain all visible pages.\n continue;\n }\n pageView.toggleLoadingIconSpinner(/* viewVisible = */ false);\n }\n }\n\n forceRendering(currentlyVisiblePages) {\n const visiblePages = currentlyVisiblePages || this._getVisiblePages();\n const scrollAhead = this.#getScrollAhead(visiblePages);\n const preRenderExtra =\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL;\n\n const pageView = this.renderingQueue.getHighestPriority(\n visiblePages,\n this._pages,\n scrollAhead,\n preRenderExtra\n );\n this.#toggleLoadingIconSpinner(visiblePages.ids);\n\n if (pageView) {\n this.#ensurePdfPageLoaded(pageView).then(() => {\n this.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @param {boolean} enhanceTextSelection\n * @param {EventBus} eventBus\n * @param {TextHighlighter} highlighter\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(\n textLayerDiv,\n pageIndex,\n viewport,\n enhanceTextSelection = false,\n eventBus,\n highlighter\n ) {\n return new TextLayerBuilder({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n enhanceTextSelection: this.isInPresentationMode\n ? false\n : enhanceTextSelection,\n highlighter,\n });\n }\n\n /**\n * @param {number} pageIndex\n * @param {EventBus} eventBus\n * @returns {TextHighlighter}\n */\n createTextHighlighter(pageIndex, eventBus) {\n return new TextHighlighter({\n eventBus,\n pageIndex,\n findController: this.isInPresentationMode ? null : this.findController,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @param {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @param {boolean} renderForms\n * @param {IL10n} l10n\n * @param {boolean} [enableScripting]\n * @param {Promise<boolean>} [hasJSActionsPromise]\n * @param {Object} [mouseState]\n * @param {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @param {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(\n pageDiv,\n pdfPage,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = null,\n hasJSActionsPromise = null,\n mouseState = null,\n fieldObjectsPromise = null,\n annotationCanvasMap = null\n ) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n imageResourcesPath,\n renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n,\n enableScripting: enableScripting ?? this.enableScripting,\n hasJSActionsPromise:\n hasJSActionsPromise || this.pdfDocument?.hasJSActions(),\n fieldObjectsPromise:\n fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),\n mouseState: mouseState || this._scriptingManager?.mouseState,\n annotationCanvasMap,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @returns {XfaLayerBuilder}\n */\n createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {\n return new XfaLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n linkService: this.linkService,\n });\n }\n\n /**\n * @param {PDFPageProxy} pdfPage\n * @returns {StructTreeLayerBuilder}\n */\n createStructTreeLayerBuilder(pdfPage) {\n return new StructTreeLayerBuilder({\n pdfPage,\n });\n }\n\n /**\n * @type {boolean} Whether all pages of the PDF document have identical\n * widths and heights.\n */\n get hasEqualPageSizes() {\n const firstPageView = this._pages[0];\n for (let i = 1, ii = this._pages.length; i < ii; ++i) {\n const pageView = this._pages[i];\n if (\n pageView.width !== firstPageView.width ||\n pageView.height !== firstPageView.height\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Returns sizes of the pages.\n * @returns {Array} Array of objects with width/height/rotation fields.\n */\n getPagesOverview() {\n return this._pages.map(pageView => {\n const viewport = pageView.pdfPage.getViewport({ scale: 1 });\n\n if (!this.enablePrintAutoRotate || isPortraitOrientation(viewport)) {\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation,\n };\n }\n // Landscape orientation.\n return {\n width: viewport.height,\n height: viewport.width,\n rotation: (viewport.rotation - 90) % 360,\n };\n });\n }\n\n /**\n * @type {Promise<OptionalContentConfig | null>}\n */\n get optionalContentConfigPromise() {\n if (!this.pdfDocument) {\n return Promise.resolve(null);\n }\n if (!this._optionalContentConfigPromise) {\n // Prevent issues if the getter is accessed *before* the `onePageRendered`\n // promise has resolved; won't (normally) happen in the default viewer.\n return this.pdfDocument.getOptionalContentConfig();\n }\n return this._optionalContentConfigPromise;\n }\n\n /**\n * @param {Promise<OptionalContentConfig>} promise - A promise that is\n * resolved with an {@link OptionalContentConfig} instance.\n */\n set optionalContentConfigPromise(promise) {\n if (!(promise instanceof Promise)) {\n throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\n }\n if (!this.pdfDocument) {\n return;\n }\n if (!this._optionalContentConfigPromise) {\n // Ignore the setter *before* the `onePageRendered` promise has resolved,\n // since it'll be overwritten anyway; won't happen in the default viewer.\n return;\n }\n this._optionalContentConfigPromise = promise;\n\n const updateArgs = { optionalContentConfigPromise: promise };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this.update();\n\n this.eventBus.dispatch(\"optionalcontentconfigchanged\", {\n source: this,\n promise,\n });\n }\n\n /**\n * @type {number} One of the values in {ScrollMode}.\n */\n get scrollMode() {\n return this._scrollMode;\n }\n\n /**\n * @param {number} mode - The direction in which the document pages should be\n * laid out within the scrolling container.\n * The constants from {ScrollMode} should be used.\n */\n set scrollMode(mode) {\n if (this._scrollMode === mode) {\n return; // The Scroll mode didn't change.\n }\n if (!isValidScrollMode(mode)) {\n throw new Error(`Invalid scroll mode: ${mode}`);\n }\n if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n return; // Disabled for performance reasons.\n }\n this._previousScrollMode = this._scrollMode;\n\n this._scrollMode = mode;\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n\n this._updateScrollMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateScrollMode(pageNumber = null) {\n const scrollMode = this._scrollMode,\n viewer = this.viewer;\n\n viewer.classList.toggle(\n \"scrollHorizontal\",\n scrollMode === ScrollMode.HORIZONTAL\n );\n viewer.classList.toggle(\"scrollWrapped\", scrollMode === ScrollMode.WRAPPED);\n\n if (!this.pdfDocument || !pageNumber) {\n return;\n }\n\n if (scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else if (this._previousScrollMode === ScrollMode.PAGE) {\n // Ensure that the current spreadMode is still applied correctly when\n // the *previous* scrollMode was `ScrollMode.PAGE`.\n this._updateSpreadMode();\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @type {number} One of the values in {SpreadMode}.\n */\n get spreadMode() {\n return this._spreadMode;\n }\n\n /**\n * @param {number} mode - Group the pages in spreads, starting with odd- or\n * even-number pages (unless `SpreadMode.NONE` is used).\n * The constants from {SpreadMode} should be used.\n */\n set spreadMode(mode) {\n if (this._spreadMode === mode) {\n return; // The Spread mode didn't change.\n }\n if (!isValidSpreadMode(mode)) {\n throw new Error(`Invalid spread mode: ${mode}`);\n }\n this._spreadMode = mode;\n this.eventBus.dispatch(\"spreadmodechanged\", { source: this, mode });\n\n this._updateSpreadMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateSpreadMode(pageNumber = null) {\n if (!this.pdfDocument) {\n return;\n }\n const viewer = this.viewer,\n pages = this._pages;\n\n if (this._scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else {\n // Temporarily remove all the pages from the DOM.\n viewer.textContent = \"\";\n\n if (this._spreadMode === SpreadMode.NONE) {\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n viewer.appendChild(pages[i].div);\n }\n } else {\n const parity = this._spreadMode - 1;\n let spread = null;\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pages[i].div);\n }\n }\n }\n\n if (!pageNumber) {\n return;\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @private\n */\n _getPageAdvance(currentPageNumber, previous = false) {\n switch (this._scrollMode) {\n case ScrollMode.WRAPPED: {\n const { views } = this._getVisiblePages(),\n pageLayout = new Map();\n\n // Determine the current (visible) page layout.\n for (const { id, y, percent, widthPercent } of views) {\n if (percent === 0 || widthPercent < 100) {\n continue;\n }\n let yArray = pageLayout.get(y);\n if (!yArray) {\n pageLayout.set(y, (yArray ||= []));\n }\n yArray.push(id);\n }\n // Find the row of the current page.\n for (const yArray of pageLayout.values()) {\n const currentIndex = yArray.indexOf(currentPageNumber);\n if (currentIndex === -1) {\n continue;\n }\n const numPages = yArray.length;\n if (numPages === 1) {\n break;\n }\n // Handle documents with varying page sizes.\n if (previous) {\n for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\n const currentId = yArray[i],\n expectedId = yArray[i + 1] - 1;\n if (currentId < expectedId) {\n return currentPageNumber - expectedId;\n }\n }\n } else {\n for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {\n const currentId = yArray[i],\n expectedId = yArray[i - 1] + 1;\n if (currentId > expectedId) {\n return expectedId - currentPageNumber;\n }\n }\n }\n // The current row is \"complete\", advance to the previous/next one.\n if (previous) {\n const firstId = yArray[0];\n if (firstId < currentPageNumber) {\n return currentPageNumber - firstId + 1;\n }\n } else {\n const lastId = yArray[numPages - 1];\n if (lastId > currentPageNumber) {\n return lastId - currentPageNumber + 1;\n }\n }\n break;\n }\n break;\n }\n case ScrollMode.HORIZONTAL: {\n break;\n }\n case ScrollMode.PAGE:\n case ScrollMode.VERTICAL: {\n if (this._spreadMode === SpreadMode.NONE) {\n break; // Normal vertical scrolling.\n }\n const parity = this._spreadMode - 1;\n\n if (previous && currentPageNumber % 2 !== parity) {\n break; // Left-hand side page.\n } else if (!previous && currentPageNumber % 2 === parity) {\n break; // Right-hand side page.\n }\n const { views } = this._getVisiblePages(),\n expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\n\n for (const { id, percent, widthPercent } of views) {\n if (id !== expectedId) {\n continue;\n }\n if (percent > 0 && widthPercent === 100) {\n return 2;\n }\n break;\n }\n break;\n }\n }\n return 1;\n }\n\n /**\n * Go to the next page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n nextPage() {\n const currentPageNumber = this._currentPageNumber,\n pagesCount = this.pagesCount;\n\n if (currentPageNumber >= pagesCount) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ false) || 1;\n\n this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\n return true;\n }\n\n /**\n * Go to the previous page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n previousPage() {\n const currentPageNumber = this._currentPageNumber;\n\n if (currentPageNumber <= 1) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ true) || 1;\n\n this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\n return true;\n }\n\n /**\n * Increase the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n increaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.ceil(newScale * 10) / 10;\n newScale = Math.min(MAX_SCALE, newScale);\n } while (--steps > 0 && newScale < MAX_SCALE);\n this.currentScaleValue = newScale;\n }\n\n /**\n * Decrease the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n decreaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.floor(newScale * 10) / 10;\n newScale = Math.max(MIN_SCALE, newScale);\n } while (--steps > 0 && newScale > MIN_SCALE);\n this.currentScaleValue = newScale;\n }\n}\n\nexport { BaseViewer, PagesCountLimit, PDFPageViewBuffer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { AnnotationLayer } from \"pdfjs-lib\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enableScripting]\n * @property {Promise<boolean>} [hasJSActionsPromise]\n * @property {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @property {Object} [mouseState]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n linkService,\n downloadManager,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = false,\n hasJSActionsPromise = null,\n fieldObjectsPromise = null,\n mouseState = null,\n annotationCanvasMap = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.imageResourcesPath = imageResourcesPath;\n this.renderForms = renderForms;\n this.l10n = l10n;\n this.annotationStorage = annotationStorage;\n this.enableScripting = enableScripting;\n this._hasJSActionsPromise = hasJSActionsPromise;\n this._fieldObjectsPromise = fieldObjectsPromise;\n this._mouseState = mouseState;\n this._annotationCanvasMap = annotationCanvasMap;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<void>} A promise that is resolved when rendering of the\n * annotations is complete.\n */\n async render(viewport, intent = \"display\") {\n const [annotations, hasJSActions = false, fieldObjects = null] =\n await Promise.all([\n this.pdfPage.getAnnotations({ intent }),\n this._hasJSActionsPromise,\n this._fieldObjectsPromise,\n ]);\n\n if (this._cancelled || annotations.length === 0) {\n return;\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n annotations,\n page: this.pdfPage,\n imageResourcesPath: this.imageResourcesPath,\n renderForms: this.renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n annotationStorage: this.annotationStorage,\n enableScripting: this.enableScripting,\n hasJSActions,\n fieldObjects,\n mouseState: this._mouseState,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n\n if (this.div) {\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n AnnotationLayer.update(parameters);\n } else {\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n this.div = document.createElement(\"div\");\n this.div.className = \"annotationLayer\";\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n\n AnnotationLayer.render(parameters);\n this.l10n.translate(this.div);\n }\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { AnnotationLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the l10n strings in the `l10n/en-US/viewer.properties` file.\n */\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string:\n \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string:\n \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n\n print_progress_percent: \"{{progress}}%\",\n\n \"toggle_sidebar.title\": \"Toggle Sidebar\",\n \"toggle_sidebar_notification2.title\":\n \"Toggle Sidebar (document contains outline/attachments/layers)\",\n\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n\n error_version_info: \"PDF.js v{{version}} (build: {{build}})\",\n error_message: \"Message: {{message}}\",\n error_stack: \"Stack: {{stack}}\",\n error_file: \"File: {{file}}\",\n error_line: \"Line: {{line}}\",\n rendering_error: \"An error occurred while rendering the page.\",\n\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n\n loading: \"Loading…\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n\n printing_not_supported:\n \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled:\n \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n};\n\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\n\nconst PARTIAL_LANG_CODES = {\n en: \"en-US\",\n es: \"es-ES\",\n fy: \"fy-NL\",\n ga: \"ga-IE\",\n gu: \"gu-IN\",\n hi: \"hi-IN\",\n hy: \"hy-AM\",\n nb: \"nb-NO\",\n ne: \"ne-NP\",\n nn: \"nn-NO\",\n pa: \"pa-IN\",\n pt: \"pt-PT\",\n sv: \"sv-SE\",\n zh: \"zh-CN\",\n};\n\n// Try to support \"incompletely\" specified language codes (see issue 13689).\nfunction fixupLangCode(langCode) {\n return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;\n}\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\n\n/**\n * No-op implementation of the localization service.\n * @implements {IL10n}\n */\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n\n async getDirection() {\n return \"ltr\";\n },\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n\n async translate(element) {},\n};\n\nexport { fixupLangCode, getL10nFallback, NullL10n };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/optional_content_config\").OptionalContentConfig} OptionalContentConfig */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IL10n} IPDFXfaLayerFactory */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PixelsPerInch,\n RenderingCancelledException,\n SVGGraphics,\n} from \"pdfjs-lib\";\nimport {\n approximateFraction,\n DEFAULT_SCALE,\n OutputScale,\n RendererType,\n RenderingStates,\n roundToDivide,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { compatibilityParams } from \"./app_options.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} PDFPageViewOptions\n * @property {HTMLDivElement} [container] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} id - The page unique ID (normally its number).\n * @property {number} scale - The page scale display.\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IPDFTextLayerFactory} textLayerFactory\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {IPDFAnnotationLayerFactory} annotationLayerFactory\n * @property {IPDFXfaLayerFactory} xfaLayerFactory\n * @property {IPDFStructTreeLayerFactory} structTreeLayerFactory\n * @property {Object} [textHighlighterFactory]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n */\n\nconst MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFPageView {\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n /**\n * @param {PDFPageViewOptions} options\n */\n constructor(options) {\n const container = options.container;\n const defaultViewport = options.defaultViewport;\n\n this.id = options.id;\n this.renderingId = \"page\" + this.id;\n\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise =\n options.optionalContentConfigPromise || null;\n this.hasRestrictedScaling = false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n\n this.eventBus = options.eventBus;\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.xfaLayerFactory = options.xfaLayerFactory;\n this.textHighlighter =\n options.textHighlighterFactory?.createTextHighlighter(\n this.id - 1,\n this.eventBus\n );\n this.structTreeLayerFactory = options.structTreeLayerFactory;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._renderError = null;\n this._isStandalone = !this.renderingQueue?.hasViewer();\n\n this._annotationCanvasMap = null;\n\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n this.xfaLayer = null;\n this.structTreeLayer = null;\n\n const div = document.createElement(\"div\");\n div.className = \"page\";\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n div.setAttribute(\"data-page-number\", this.id);\n div.setAttribute(\"role\", \"region\");\n this.l10n.get(\"page_landmark\", { page: this.id }).then(msg => {\n div.setAttribute(\"aria-label\", msg);\n });\n this.div = div;\n\n container?.appendChild(div);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n }\n }\n\n /**\n * @private\n */\n async _renderAnnotationLayer() {\n let error = null;\n try {\n await this.annotationLayer.render(this.viewport, \"display\");\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"annotationlayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n /**\n * @private\n */\n async _renderXfaLayer() {\n let error = null;\n try {\n const result = await this.xfaLayer.render(this.viewport, \"display\");\n if (this.textHighlighter) {\n this._buildXfaTextContentItems(result.textDivs);\n }\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"xfalayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n async _buildXfaTextContentItems(textDivs) {\n const text = await this.pdfPage.getTextContent();\n const items = [];\n for (const item of text.items) {\n items.push(item.str);\n }\n this.textHighlighter.setTextMapping(textDivs, items);\n this.textHighlighter.enable();\n }\n\n /**\n * @private\n */\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n const zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n\n reset({\n keepZoomLayer = false,\n keepAnnotationLayer = false,\n keepXfaLayer = false,\n } = {}) {\n this.cancelRendering({ keepAnnotationLayer, keepXfaLayer });\n this.renderingState = RenderingStates.INITIAL;\n\n const div = this.div;\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n\n const childNodes = div.childNodes,\n zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,\n annotationLayerNode =\n (keepAnnotationLayer && this.annotationLayer?.div) || null,\n xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const node = childNodes[i];\n switch (node) {\n case zoomLayerNode:\n case annotationLayerNode:\n case xfaLayerNode:\n continue;\n }\n node.remove();\n }\n div.removeAttribute(\"data-loaded\");\n\n if (annotationLayerNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.annotationLayer.hide();\n }\n if (xfaLayerNode) {\n // Hide the XFA layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.xfaLayer.hide();\n }\n\n if (!zoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n\n this.loadingIconDiv = document.createElement(\"div\");\n this.loadingIconDiv.className = \"loadingIcon notVisible\";\n if (this._isStandalone) {\n this.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n this.loadingIconDiv.setAttribute(\"role\", \"img\");\n this.l10n.get(\"loading\").then(msg => {\n this.loadingIconDiv?.setAttribute(\"aria-label\", msg);\n });\n div.appendChild(this.loadingIconDiv);\n }\n\n update({ scale = 0, rotation = null, optionalContentConfigPromise = null }) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n typeof arguments[0] !== \"object\"\n ) {\n console.error(\n \"PDFPageView.update called with separate parameters, please use an object instead.\"\n );\n\n this.update({\n scale: arguments[0],\n rotation: arguments[1],\n optionalContentConfigPromise: arguments[2],\n });\n return;\n }\n\n this.scale = scale || this.scale;\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n if (optionalContentConfigPromise instanceof Promise) {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n }\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n const viewportScale = this.scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n this.viewport = this.viewport.clone({\n scale: viewportScale,\n rotation: totalRotation,\n });\n\n if (this._isStandalone) {\n const { style } = document.documentElement;\n style.setProperty(\"--zoom-factor\", this.scale);\n style.setProperty(\"--viewport-scale-factor\", viewportScale);\n }\n\n if (this.svg) {\n this.cssTransform({\n target: this.svg,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n\n let isScalingRestricted = false;\n if (this.canvas && this.maxCanvasPixels > 0) {\n const outputScale = this.outputScale;\n if (\n ((Math.floor(this.viewport.width) * outputScale.sx) | 0) *\n ((Math.floor(this.viewport.height) * outputScale.sy) | 0) >\n this.maxCanvasPixels\n ) {\n isScalingRestricted = true;\n }\n }\n\n if (this.canvas) {\n if (\n this.useOnlyCssZoom ||\n (this.hasRestrictedScaling && isScalingRestricted)\n ) {\n this.cssTransform({\n target: this.canvas,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hidden) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = \"absolute\";\n }\n }\n if (this.zoomLayer) {\n this.cssTransform({ target: this.zoomLayer.firstChild });\n }\n this.reset({\n keepZoomLayer: true,\n keepAnnotationLayer: true,\n keepXfaLayer: true,\n });\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering({ keepAnnotationLayer = false, keepXfaLayer = false } = {}) {\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.resume = null;\n\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n if (\n this.annotationLayer &&\n (!keepAnnotationLayer || !this.annotationLayer.div)\n ) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n this._annotationCanvasMap = null;\n }\n if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\n this.xfaLayer.cancel();\n this.xfaLayer = null;\n this.textHighlighter?.disable();\n }\n if (this._onTextLayerRendered) {\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n }\n }\n\n cssTransform({\n target,\n redrawAnnotationLayer = false,\n redrawXfaLayer = false,\n }) {\n // Scale target (canvas or svg), its wrapper and page container.\n const width = this.viewport.width;\n const height = this.viewport.height;\n const div = this.div;\n target.style.width =\n target.parentNode.style.width =\n div.style.width =\n Math.floor(width) + \"px\";\n target.style.height =\n target.parentNode.style.height =\n div.style.height =\n Math.floor(height) + \"px\";\n // The canvas may have been originally rotated; rotate relative to that.\n const relativeRotation =\n this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n const absRotation = Math.abs(relativeRotation);\n let scaleX = 1,\n scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n // Scale x and y because of the rotation.\n scaleX = height / width;\n scaleY = width / height;\n }\n target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\n\n if (this.textLayer) {\n // Rotating the text layer is more complicated since the divs inside the\n // the text layer are rotated.\n // TODO: This could probably be simplified by drawing the text layer in\n // one orientation and then rotating overall.\n const textLayerViewport = this.textLayer.viewport;\n const textRelativeRotation =\n this.viewport.rotation - textLayerViewport.rotation;\n const textAbsRotation = Math.abs(textRelativeRotation);\n let scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n const textLayerDiv = this.textLayer.textLayerDiv;\n let transX, transY;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 180:\n transX = \"-\" + textLayerDiv.style.width;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 270:\n transX = \"-\" + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error(\"Bad rotation value.\");\n break;\n }\n\n textLayerDiv.style.transform =\n `rotate(${textAbsRotation}deg) ` +\n `scale(${scale}) ` +\n `translate(${transX}, ${transY})`;\n textLayerDiv.style.transformOrigin = \"0% 0%\";\n }\n\n if (redrawAnnotationLayer && this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n if (redrawXfaLayer && this.xfaLayer) {\n this._renderXfaLayer();\n }\n }\n\n get width() {\n return this.viewport.width;\n }\n\n get height() {\n return this.viewport.height;\n }\n\n getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n\n /**\n * @ignore\n */\n toggleLoadingIconSpinner(viewVisible = false) {\n this.loadingIconDiv?.classList.toggle(\"notVisible\", !viewVisible);\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n this.reset(); // Ensure that we reset all state to prevent issues.\n }\n const { div, pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n const canvasWrapper = document.createElement(\"div\");\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add(\"canvasWrapper\");\n\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n\n let textLayer = null;\n if (this.textLayerMode !== TextLayerMode.DISABLE && this.textLayerFactory) {\n const textLayerDiv = document.createElement(\"div\");\n textLayerDiv.className = \"textLayer\";\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n\n textLayer = this.textLayerFactory.createTextLayerBuilder(\n textLayerDiv,\n this.id - 1,\n this.viewport,\n this.textLayerMode === TextLayerMode.ENABLE_ENHANCE,\n this.eventBus,\n this.textHighlighter\n );\n }\n this.textLayer = textLayer;\n\n if (\n this.#annotationMode !== AnnotationMode.DISABLE &&\n this.annotationLayerFactory\n ) {\n this._annotationCanvasMap ||= new Map();\n this.annotationLayer ||=\n this.annotationLayerFactory.createAnnotationLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null,\n this.imageResourcesPath,\n this.#annotationMode === AnnotationMode.ENABLE_FORMS,\n this.l10n,\n /* enableScripting = */ null,\n /* hasJSActionsPromise = */ null,\n /* mouseState = */ null,\n /* fieldObjectsPromise = */ null,\n /* annotationCanvasMap */ this._annotationCanvasMap\n );\n }\n\n if (this.xfaLayer?.div) {\n // The xfa layer needs to stay on top.\n div.appendChild(this.xfaLayer.div);\n }\n\n let renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n\n const finishPaintTask = async (error = null) => {\n // The paintTask may have been replaced by a new one, so only remove\n // the reference to the paintTask if it matches the one that is\n // triggering this callback.\n if (paintTask === this.paintTask) {\n this.paintTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n this._renderError = null;\n return;\n }\n this._renderError = error;\n\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n this._resetZoomLayer(/* removeFromDOM = */ true);\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n timestamp: performance.now(),\n error: this._renderError,\n });\n\n if (error) {\n throw error;\n }\n };\n\n const paintTask =\n this.renderer === RendererType.SVG\n ? this.paintOnSvg(canvasWrapper)\n : this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n\n const resultPromise = paintTask.promise.then(\n () => {\n return finishPaintTask(null).then(() => {\n if (textLayer) {\n const readableStream = pdfPage.streamTextContent({\n includeMarkedContent: true,\n });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n\n if (this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n });\n },\n function (reason) {\n return finishPaintTask(reason);\n }\n );\n\n if (this.xfaLayerFactory) {\n if (!this.xfaLayer) {\n this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null\n );\n }\n this._renderXfaLayer();\n }\n\n // The structure tree is currently only supported when the text layer is\n // enabled and a canvas is used for rendering.\n if (this.structTreeLayerFactory && this.textLayer && this.canvas) {\n // The structure tree must be generated after the text layer for the\n // aria-owns to work.\n this._onTextLayerRendered = event => {\n if (event.pageNumber !== this.id) {\n return;\n }\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n this.pdfPage.getStructTree().then(tree => {\n if (!tree) {\n return;\n }\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n const treeDom = this.structTreeLayer.render(tree);\n treeDom.classList.add(\"structTree\");\n this.canvas.appendChild(treeDom);\n });\n };\n this.eventBus._on(\"textlayerrendered\", this._onTextLayerRendered);\n this.structTreeLayer =\n this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage);\n }\n\n div.setAttribute(\"data-loaded\", true);\n\n this.eventBus.dispatch(\"pagerender\", {\n source: this,\n pageNumber: this.id,\n });\n return resultPromise;\n }\n\n paintOnCanvas(canvasWrapper) {\n const renderCapability = createPromiseCapability();\n const result = {\n promise: renderCapability.promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n renderTask.cancel();\n },\n };\n\n const viewport = this.viewport;\n const canvas = document.createElement(\"canvas\");\n\n // Keep the canvas hidden until the first draw callback, or until drawing\n // is complete when `!this.renderingQueue`, to prevent black flickering.\n canvas.hidden = true;\n let isCanvasHidden = true;\n const showCanvas = function () {\n if (isCanvasHidden) {\n canvas.hidden = false;\n isCanvasHidden = false;\n }\n };\n\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = (this.outputScale = new OutputScale());\n\n if (this.useOnlyCssZoom) {\n const actualSizeViewport = viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n // Use a scale that makes the canvas have the originally intended size\n // of the page.\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n }\n\n if (this.maxCanvasPixels > 0) {\n const pixelsInViewport = viewport.width * viewport.height;\n const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n\n const sfx = approximateFraction(outputScale.sx);\n const sfy = approximateFraction(outputScale.sy);\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + \"px\";\n canvas.style.height = roundToDivide(viewport.height, sfy[1]) + \"px\";\n\n // Add the viewport so it's known what it was originally drawn with.\n this.paintedViewportMap.set(canvas, viewport);\n\n // Rendering area\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: this.viewport,\n annotationMode: this.#annotationMode,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n const renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n\n renderTask.promise.then(\n function () {\n showCanvas();\n renderCapability.resolve();\n },\n function (error) {\n showCanvas();\n renderCapability.reject(error);\n }\n );\n return result;\n }\n\n paintOnSvg(wrapper) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n // Return a mock object, to prevent errors such as e.g.\n // \"TypeError: paintTask.promise is undefined\".\n return {\n promise: Promise.reject(new Error(\"SVG rendering is not supported.\")),\n onRenderContinue(cont) {},\n cancel() {},\n };\n }\n\n let cancelled = false;\n const ensureNotCancelled = () => {\n if (cancelled) {\n throw new RenderingCancelledException(\n `Rendering cancelled, page ${this.id}`,\n \"svg\"\n );\n }\n };\n\n const pdfPage = this.pdfPage;\n const actualSizeViewport = this.viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const promise = pdfPage\n .getOperatorList({\n annotationMode: this.#annotationMode,\n })\n .then(opList => {\n ensureNotCancelled();\n const svgGfx = new SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {\n ensureNotCancelled();\n this.svg = svg;\n this.paintedViewportMap.set(svg, actualSizeViewport);\n\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n this.renderingState = RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n\n return {\n promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n cancelled = true;\n },\n };\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n if (this.pageLabel !== null) {\n this.div.setAttribute(\"data-page-label\", this.pageLabel);\n } else {\n this.div.removeAttribute(\"data-page-label\");\n }\n }\n}\n\nexport { PDFPageView };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n\nconst PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: \"group\",\n Sect: \"group\", // XXX: There's a \"section\" role, but it's abstract.\n Div: \"group\",\n Aside: \"note\",\n NonStruct: \"none\",\n // Block level structure types\n P: null,\n // H<n>,\n H: \"heading\",\n Title: null,\n FENote: \"note\",\n // Sub-block level structure type\n Sub: \"group\",\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: \"link\",\n Annot: \"note\",\n Form: \"form\",\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: \"list\",\n LI: \"listitem\",\n LBody: null,\n // Table standard structure types\n Table: \"table\",\n TR: \"row\",\n TH: \"columnheader\",\n TD: \"cell\",\n THead: \"columnheader\",\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: \"figure\",\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n/**\n * @typedef {Object} StructTreeLayerBuilderOptions\n * @property {PDFPageProxy} pdfPage\n */\n\nclass StructTreeLayerBuilder {\n /**\n * @param {StructTreeLayerBuilderOptions} options\n */\n constructor({ pdfPage }) {\n this.pdfPage = pdfPage;\n }\n\n render(structTree) {\n return this._walk(structTree);\n }\n\n _setAttributes(structElement, htmlElement) {\n if (structElement.alt !== undefined) {\n htmlElement.setAttribute(\"aria-label\", structElement.alt);\n }\n if (structElement.id !== undefined) {\n htmlElement.setAttribute(\"aria-owns\", structElement.id);\n }\n if (structElement.lang !== undefined) {\n htmlElement.setAttribute(\"lang\", structElement.lang);\n }\n }\n\n _walk(node) {\n if (!node) {\n return null;\n }\n\n const element = document.createElement(\"span\");\n if (\"role\" in node) {\n const { role } = node;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n element.setAttribute(\"role\", \"heading\");\n element.setAttribute(\"aria-level\", match[1]);\n } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\n element.setAttribute(\"role\", PDF_ROLE_TO_HTML_ROLE[role]);\n }\n }\n\n this._setAttributes(node, element);\n\n if (node.children) {\n if (node.children.length === 1 && \"id\" in node.children[0]) {\n // Often there is only one content node so just set the values on the\n // parent node to avoid creating an extra span.\n this._setAttributes(node.children[0], element);\n } else {\n for (const kid of node.children) {\n element.appendChild(this._walk(kid));\n }\n }\n }\n return element;\n }\n}\n\nexport { StructTreeLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_find_controller\").PDFFindController} PDFFindController */\n\n/**\n * @typedef {Object} TextHighlighterOptions\n * @property {PDFFindController} findController\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n */\n\n/**\n * TextHighlighter handles highlighting matches from the FindController in\n * either the text layer or XFA layer depending on the type of document.\n */\nclass TextHighlighter {\n /**\n * @param {TextHighlighterOptions} options\n */\n constructor({ findController, eventBus, pageIndex }) {\n this.findController = findController;\n this.matches = [];\n this.eventBus = eventBus;\n this.pageIdx = pageIndex;\n this._onUpdateTextLayerMatches = null;\n this.textDivs = null;\n this.textContentItemsStr = null;\n this.enabled = false;\n }\n\n /**\n * Store two arrays that will map DOM nodes to text they should contain.\n * The arrays should be of equal length and the array element at each index\n * should correspond to the other. e.g.\n * `items[0] = \"<span>Item 0</span>\" and texts[0] = \"Item 0\";\n *\n * @param {Array<Node>} divs\n * @param {Array<string>} texts\n */\n setTextMapping(divs, texts) {\n this.textDivs = divs;\n this.textContentItemsStr = texts;\n }\n\n /**\n * Start listening for events to update the highlighter and check if there are\n * any current matches that need be highlighted.\n */\n enable() {\n if (!this.textDivs || !this.textContentItemsStr) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n if (this.enabled) {\n throw new Error(\"TextHighlighter is already enabled.\");\n }\n this.enabled = true;\n if (!this._onUpdateTextLayerMatches) {\n this._onUpdateTextLayerMatches = evt => {\n if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\n this._updateMatches();\n }\n };\n this.eventBus._on(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n }\n this._updateMatches();\n }\n\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this._onUpdateTextLayerMatches) {\n this.eventBus._off(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n this._onUpdateTextLayerMatches = null;\n }\n }\n\n _convertMatches(matches, matchesLength) {\n // Early exit if there is nothing to convert.\n if (!matches) {\n return [];\n }\n const { textContentItemsStr } = this;\n\n let i = 0,\n iIndex = 0;\n const end = textContentItemsStr.length - 1;\n const result = [];\n\n for (let m = 0, mm = matches.length; m < mm; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error(\"Could not find a matching mapping\");\n }\n\n const match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n matchIdx += matchesLength[m];\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n result.push(match);\n }\n return result;\n }\n\n _renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n const { findController, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n\n const isSelectedPage = pageIdx === findController.selected.pageIdx;\n const selectedMatchIdx = findController.selected.matchIdx;\n const highlightAll = findController.state.highlightAll;\n let prevEnd = null;\n const infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n const divIdx = begin.divIdx;\n textDivs[divIdx].textContent = \"\";\n return appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n if (div.nodeType === Node.TEXT_NODE) {\n const span = document.createElement(\"span\");\n div.parentNode.insertBefore(span, div);\n span.appendChild(div);\n textDivs[divIdx] = span;\n div = span;\n }\n const content = textContentItemsStr[divIdx].substring(\n fromOffset,\n toOffset\n );\n const node = document.createTextNode(content);\n if (className) {\n const span = document.createElement(\"span\");\n span.className = `${className} appended`;\n span.appendChild(node);\n div.appendChild(span);\n return className.includes(\"selected\") ? span.offsetLeft : 0;\n }\n div.appendChild(node);\n return 0;\n }\n\n let i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n for (let i = i0; i < i1; i++) {\n const match = matches[i];\n const begin = match.begin;\n const end = match.end;\n const isSelected = isSelectedPage && i === selectedMatchIdx;\n const highlightSuffix = isSelected ? \" selected\" : \"\";\n let selectedLeft = 0;\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n end.offset,\n \"highlight\" + highlightSuffix\n );\n } else {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n infinity.offset,\n \"highlight begin\" + highlightSuffix\n );\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = \"highlight middle\" + highlightSuffix;\n }\n beginText(end, \"highlight end\" + highlightSuffix);\n }\n prevEnd = end;\n\n if (isSelected) {\n // Attempt to scroll the selected match into view.\n findController.scrollMatchIntoView({\n element: textDivs[begin.divIdx],\n selectedLeft,\n pageIndex: pageIdx,\n matchIndex: selectedMatchIdx,\n });\n }\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n _updateMatches() {\n if (!this.enabled) {\n return;\n }\n const { findController, matches, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (let i = 0, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n const div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = \"\";\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (!findController?.highlightMatches) {\n return;\n }\n // Convert the matches on the `findController` into the match format\n // used for the textLayer.\n const pageMatches = findController.pageMatches[pageIdx] || null;\n const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\n\n this.matches = this._convertMatches(pageMatches, pageMatchesLength);\n this._renderMatches(this.matches);\n }\n}\n\nexport { TextHighlighter };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./text_highlighter\").TextHighlighter} TextHighlighter */\n\nimport { renderTextLayer } from \"pdfjs-lib\";\n\nconst EXPAND_DIVS_TIMEOUT = 300; // ms\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {HTMLDivElement} textLayerDiv - The text layer container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n * @property {PageViewport} viewport - The viewport of the text layer.\n * @property {TextHighlighter} highlighter - Optional object that will handle\n * highlighting text from the find controller.\n * @property {boolean} enhanceTextSelection - Option to turn on improved\n * text selection.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n constructor({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n highlighter = null,\n enhanceTextSelection = false,\n }) {\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus;\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageNumber = pageIndex + 1;\n this.viewport = viewport;\n this.textDivs = [];\n this.textLayerRenderTask = null;\n this.highlighter = highlighter;\n this.enhanceTextSelection = enhanceTextSelection;\n\n this._bindMouse();\n }\n\n /**\n * @private\n */\n _finishRendering() {\n this.renderingDone = true;\n\n if (!this.enhanceTextSelection) {\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.textLayerDiv.appendChild(endOfContent);\n }\n\n this.eventBus.dispatch(\"textlayerrendered\", {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length,\n });\n }\n\n /**\n * Renders the text layer.\n *\n * @param {number} [timeout] - Wait for a specified amount of milliseconds\n * before rendering.\n */\n render(timeout = 0) {\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n\n this.textDivs.length = 0;\n this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);\n\n const textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = renderTextLayer({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout,\n enhanceTextSelection: this.enhanceTextSelection,\n });\n this.textLayerRenderTask.promise.then(\n () => {\n this.textLayerDiv.appendChild(textLayerFrag);\n this._finishRendering();\n this.highlighter?.enable();\n },\n function (reason) {\n // Cancelled or failed to render text layer; skipping errors.\n }\n );\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n this.highlighter?.disable();\n }\n\n setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n\n setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n *\n * @private\n */\n _bindMouse() {\n const div = this.textLayerDiv;\n let expandDivsTimer = null;\n\n div.addEventListener(\"mousedown\", evt => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(true);\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n expandDivsTimer\n ) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n adjustTop =\n adjustTop &&\n window\n .getComputedStyle(end)\n .getPropertyValue(\"-moz-user-select\") !== \"none\";\n }\n if (adjustTop) {\n const divBounds = div.getBoundingClientRect();\n const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + \"%\";\n }\n }\n end.classList.add(\"active\");\n });\n\n div.addEventListener(\"mouseup\", () => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n expandDivsTimer = setTimeout(() => {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n } else {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n end.style.top = \"\";\n }\n end.classList.remove(\"active\");\n });\n }\n}\n\nexport { TextLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaLayer } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} XfaLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {Object} [xfaHtml]\n */\n\nclass XfaLayerBuilder {\n /**\n * @param {XfaLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n annotationStorage = null,\n linkService,\n xfaHtml = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.annotationStorage = annotationStorage;\n this.linkService = linkService;\n this.xfaHtml = xfaHtml;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<Object | void>} A promise that is resolved when rendering\n * of the XFA layer is complete. The first rendering will return an object\n * with a `textDivs` property that can be used with the TextHighlighter.\n */\n render(viewport, intent = \"display\") {\n if (intent === \"print\") {\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml: this.xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n // Create an xfa layer div and render the form\n const div = document.createElement(\"div\");\n this.pageDiv.appendChild(div);\n parameters.div = div;\n\n const result = XfaLayer.render(parameters);\n return Promise.resolve(result);\n }\n\n // intent === \"display\"\n return this.pdfPage\n .getXfa()\n .then(xfaHtml => {\n if (this._cancelled || !xfaHtml) {\n return { textDivs: [] };\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n if (this.div) {\n return XfaLayer.update(parameters);\n }\n // Create an xfa layer div and render the form\n this.div = document.createElement(\"div\");\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n return XfaLayer.render(parameters);\n })\n .catch(error => {\n console.error(error);\n });\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { XfaLayerBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SCROLLBAR_PADDING, ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { CursorTool } from \"./pdf_cursor_tools.js\";\nimport { PagesCountLimit } from \"./base_viewer.js\";\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLDivElement} toolbarButtonContainer - Container where all the\n * toolbar buttons are placed. The maximum height of the toolbar is controlled\n * dynamically by adjusting the 'max-height' CSS property of this DOM element.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\n * bookmark link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {HTMLDivElement} mainContainer\n * @param {EventBus} eventBus\n */\n constructor(options, mainContainer, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.toolbarButtonContainer = options.toolbarButtonContainer;\n this.buttons = [\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n close: true,\n },\n { element: options.openFileButton, eventName: \"openfile\", close: true },\n { element: options.printButton, eventName: \"print\", close: true },\n { element: options.downloadButton, eventName: \"download\", close: true },\n { element: options.viewBookmarkButton, eventName: null, close: true },\n { element: options.firstPageButton, eventName: \"firstpage\", close: true },\n { element: options.lastPageButton, eventName: \"lastpage\", close: true },\n {\n element: options.pageRotateCwButton,\n eventName: \"rotatecw\",\n close: false,\n },\n {\n element: options.pageRotateCcwButton,\n eventName: \"rotateccw\",\n close: false,\n },\n {\n element: options.cursorSelectToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.SELECT },\n close: true,\n },\n {\n element: options.cursorHandToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.HAND },\n close: true,\n },\n {\n element: options.scrollPageButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.PAGE },\n close: true,\n },\n {\n element: options.scrollVerticalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.VERTICAL },\n close: true,\n },\n {\n element: options.scrollHorizontalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.HORIZONTAL },\n close: true,\n },\n {\n element: options.scrollWrappedButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.WRAPPED },\n close: true,\n },\n {\n element: options.spreadNoneButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.NONE },\n close: true,\n },\n {\n element: options.spreadOddButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.ODD },\n close: true,\n },\n {\n element: options.spreadEvenButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.EVEN },\n close: true,\n },\n {\n element: options.documentPropertiesButton,\n eventName: \"documentproperties\",\n close: true,\n },\n ];\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.mainContainer = mainContainer;\n this.eventBus = eventBus;\n\n this.opened = false;\n this.containerHeight = null;\n this.previousContainerHeight = null;\n\n this.reset();\n\n // Bind the event listeners for click, cursor tool, and scroll/spread mode\n // actions.\n this._bindClickListeners();\n this._bindCursorToolsListener(options);\n this._bindScrollModeListener(options);\n this._bindSpreadModeListener(options);\n\n // Bind the event listener for adjusting the 'max-height' of the toolbar.\n this.eventBus._on(\"resize\", this._setMaxHeight.bind(this));\n }\n\n /**\n * @type {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this._updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this._updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this._updateUIState();\n\n // Reset the Scroll/Spread buttons too, since they're document specific.\n this.eventBus.dispatch(\"secondarytoolbarreset\", { source: this });\n }\n\n _updateUIState() {\n this.items.firstPage.disabled = this.pageNumber <= 1;\n this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n _bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener(\"click\", this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (const { element, eventName, close, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n const details = { source: this };\n for (const property in eventDetails) {\n details[property] = eventDetails[property];\n }\n this.eventBus.dispatch(eventName, details);\n }\n if (close) {\n this.close();\n }\n });\n }\n }\n\n _bindCursorToolsListener(buttons) {\n this.eventBus._on(\"cursortoolchanged\", function ({ tool }) {\n buttons.cursorSelectToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.SELECT\n );\n buttons.cursorHandToolButton.classList.toggle(\n \"toggled\",\n tool === CursorTool.HAND\n );\n });\n }\n\n _bindScrollModeListener(buttons) {\n const scrollModeChanged = ({ mode }) => {\n buttons.scrollPageButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.PAGE\n );\n buttons.scrollVerticalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.VERTICAL\n );\n buttons.scrollHorizontalButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.HORIZONTAL\n );\n buttons.scrollWrappedButton.classList.toggle(\n \"toggled\",\n mode === ScrollMode.WRAPPED\n );\n\n // Permanently *disable* the Scroll buttons when PAGE-scrolling is being\n // enforced for *very* long/large documents; please see the `BaseViewer`.\n const forceScrollModePage =\n this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\n buttons.scrollPageButton.disabled = forceScrollModePage;\n buttons.scrollVerticalButton.disabled = forceScrollModePage;\n buttons.scrollHorizontalButton.disabled = forceScrollModePage;\n buttons.scrollWrappedButton.disabled = forceScrollModePage;\n\n // Temporarily *disable* the Spread buttons when horizontal scrolling is\n // enabled, since the non-default Spread modes doesn't affect the layout.\n const isScrollModeHorizontal = mode === ScrollMode.HORIZONTAL;\n buttons.spreadNoneButton.disabled = isScrollModeHorizontal;\n buttons.spreadOddButton.disabled = isScrollModeHorizontal;\n buttons.spreadEvenButton.disabled = isScrollModeHorizontal;\n };\n this.eventBus._on(\"scrollmodechanged\", scrollModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n scrollModeChanged({ mode: ScrollMode.VERTICAL });\n }\n });\n }\n\n _bindSpreadModeListener(buttons) {\n function spreadModeChanged({ mode }) {\n buttons.spreadNoneButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.NONE\n );\n buttons.spreadOddButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.ODD\n );\n buttons.spreadEvenButton.classList.toggle(\n \"toggled\",\n mode === SpreadMode.EVEN\n );\n }\n this.eventBus._on(\"spreadmodechanged\", spreadModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n spreadModeChanged({ mode: SpreadMode.NONE });\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this._setMaxHeight();\n\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.toolbar.classList.remove(\"hidden\");\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toolbar.classList.add(\"hidden\");\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _setMaxHeight() {\n if (!this.opened) {\n return; // Only adjust the 'max-height' if the toolbar is visible.\n }\n this.containerHeight = this.mainContainer.clientHeight;\n\n if (this.containerHeight === this.previousContainerHeight) {\n return;\n }\n this.toolbarButtonContainer.style.maxHeight = `${\n this.containerHeight - SCROLLBAR_PADDING\n }px`;\n\n this.previousContainerHeight = this.containerHeight;\n }\n}\n\nexport { SecondaryToolbar };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n DEFAULT_SCALE,\n DEFAULT_SCALE_VALUE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n} from \"./ui_utils.js\";\n\nconst PAGE_NUMBER_LOADING_INDICATOR = \"visiblePageIsLoading\";\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * Its width is adjusted, when necessary, on UI localization.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} presentationModeButton - Button to switch to\n * presentation mode.\n * @property {HTMLButtonElement} download - Button to download the document.\n * @property {HTMLAnchorElement} viewBookmark - Button to obtain a bookmark link\n * to the current location in the document.\n */\n\nclass Toolbar {\n /**\n * @param {ToolbarOptions} options\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.toolbar = options.container;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.buttons = [\n { element: options.previous, eventName: \"previouspage\" },\n { element: options.next, eventName: \"nextpage\" },\n { element: options.zoomIn, eventName: \"zoomin\" },\n { element: options.zoomOut, eventName: \"zoomout\" },\n { element: options.openFile, eventName: \"openfile\" },\n { element: options.print, eventName: \"print\" },\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n },\n { element: options.download, eventName: \"download\" },\n { element: options.viewBookmark, eventName: null },\n ];\n this.items = {\n numPages: options.numPages,\n pageNumber: options.pageNumber,\n scaleSelect: options.scaleSelect,\n customScaleOption: options.customScaleOption,\n previous: options.previous,\n next: options.next,\n zoomIn: options.zoomIn,\n zoomOut: options.zoomOut,\n };\n\n this._wasLocalized = false;\n this.reset();\n\n // Bind the event listeners for click and various other actions.\n this._bindListeners();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this._updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this._updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = (pageScaleValue || pageScale).toString();\n this.pageScale = pageScale;\n this._updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this._updateUIState(true);\n this.updateLoadingIndicatorState();\n }\n\n _bindListeners() {\n const { pageNumber, scaleSelect } = this.items;\n const self = this;\n\n // The buttons within the toolbar.\n for (const { element, eventName } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this });\n }\n });\n }\n // The non-button elements within the toolbar.\n pageNumber.addEventListener(\"click\", function () {\n this.select();\n });\n pageNumber.addEventListener(\"change\", function () {\n self.eventBus.dispatch(\"pagenumberchanged\", {\n source: self,\n value: this.value,\n });\n });\n\n scaleSelect.addEventListener(\"change\", function () {\n if (this.value === \"custom\") {\n return;\n }\n self.eventBus.dispatch(\"scalechanged\", {\n source: self,\n value: this.value,\n });\n });\n // Here we depend on browsers dispatching the \"click\" event *after* the\n // \"change\" event, when the <select>-element changes.\n scaleSelect.addEventListener(\"click\", function (evt) {\n const target = evt.target;\n // Remove focus when an <option>-element was *clicked*, to improve the UX\n // for mouse users (fixes bug 1300525 and issue 4923).\n if (\n this.value === self.pageScaleValue &&\n target.tagName.toUpperCase() === \"OPTION\"\n ) {\n this.blur();\n }\n });\n // Suppress context menus for some controls.\n scaleSelect.oncontextmenu = noContextMenuHandler;\n\n this.eventBus._on(\"localized\", () => {\n this._wasLocalized = true;\n this._adjustScaleWidth();\n this._updateUIState(true);\n });\n }\n\n _updateUIState(resetNumPages = false) {\n if (!this._wasLocalized) {\n // Don't update the UI state until we localize the toolbar.\n return;\n }\n const { pageNumber, pagesCount, pageScaleValue, pageScale, items } = this;\n\n if (resetNumPages) {\n if (this.hasPageLabels) {\n items.pageNumber.type = \"text\";\n } else {\n items.pageNumber.type = \"number\";\n this.l10n.get(\"of_pages\", { pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n }\n items.pageNumber.max = pagesCount;\n }\n\n if (this.hasPageLabels) {\n items.pageNumber.value = this.pageLabel;\n this.l10n.get(\"page_of_pages\", { pageNumber, pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n } else {\n items.pageNumber.value = pageNumber;\n }\n\n items.previous.disabled = pageNumber <= 1;\n items.next.disabled = pageNumber >= pagesCount;\n\n items.zoomOut.disabled = pageScale <= MIN_SCALE;\n items.zoomIn.disabled = pageScale >= MAX_SCALE;\n\n this.l10n\n .get(\"page_scale_percent\", { scale: Math.round(pageScale * 10000) / 100 })\n .then(msg => {\n let predefinedValueFound = false;\n for (const option of items.scaleSelect.options) {\n if (option.value !== pageScaleValue) {\n option.selected = false;\n continue;\n }\n option.selected = true;\n predefinedValueFound = true;\n }\n if (!predefinedValueFound) {\n items.customScaleOption.textContent = msg;\n items.customScaleOption.selected = true;\n }\n });\n }\n\n updateLoadingIndicatorState(loading = false) {\n const pageNumberInput = this.items.pageNumber;\n\n pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);\n }\n\n /**\n * Increase the width of the zoom dropdown DOM element if, and only if, it's\n * too narrow to fit the *longest* of the localized strings.\n * @private\n */\n async _adjustScaleWidth() {\n const { items, l10n } = this;\n\n const predefinedValuesPromise = Promise.all([\n l10n.get(\"page_scale_auto\"),\n l10n.get(\"page_scale_actual\"),\n l10n.get(\"page_scale_fit\"),\n l10n.get(\"page_scale_width\"),\n ]);\n\n const style = getComputedStyle(items.scaleSelect),\n scaleSelectContainerWidth = parseInt(\n style.getPropertyValue(\"--scale-select-container-width\"),\n 10\n ),\n scaleSelectOverflow = parseInt(\n style.getPropertyValue(\"--scale-select-overflow\"),\n 10\n );\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement(\"canvas\");\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n let ctx = canvas.getContext(\"2d\", { alpha: false });\n\n await animationStarted;\n ctx.font = `${style.fontSize} ${style.fontFamily}`;\n\n let maxWidth = 0;\n for (const predefinedValue of await predefinedValuesPromise) {\n const { width } = ctx.measureText(predefinedValue);\n if (width > maxWidth) {\n maxWidth = width;\n }\n }\n maxWidth += 2 * scaleSelectOverflow;\n\n if (maxWidth > scaleSelectContainerWidth) {\n const doc = document.documentElement;\n doc.style.setProperty(\"--scale-select-container-width\", `${maxWidth}px`);\n }\n // Zeroing the width and height cause Firefox to release graphics resources\n // immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n canvas = ctx = null;\n }\n}\n\nexport { Toolbar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\n/**\n * View History - This is a utility for saving various view parameters for\n * recently opened files.\n *\n * The way that the view parameters are stored depends on how PDF.js is built,\n * for 'gulp <flag>' the following cases exist:\n * - MOZCENTRAL - uses sessionStorage.\n * - GENERIC or CHROME - uses localStorage, if it is available.\n */\nclass ViewHistory {\n constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n this.fingerprint = fingerprint;\n this.cacheSize = cacheSize;\n\n this._initializedPromise = this._readFromStorage().then(databaseStr => {\n const database = JSON.parse(databaseStr || \"{}\");\n let index = -1;\n if (!Array.isArray(database.files)) {\n database.files = [];\n } else {\n while (database.files.length >= this.cacheSize) {\n database.files.shift();\n }\n\n for (let i = 0, ii = database.files.length; i < ii; i++) {\n const branch = database.files[i];\n if (branch.fingerprint === this.fingerprint) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n index = database.files.push({ fingerprint: this.fingerprint }) - 1;\n }\n this.file = database.files[index];\n this.database = database;\n });\n }\n\n async _writeToStorage() {\n const databaseStr = JSON.stringify(this.database);\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n sessionStorage.setItem(\"pdfjs.history\", databaseStr);\n return;\n }\n localStorage.setItem(\"pdfjs.history\", databaseStr);\n }\n\n async _readFromStorage() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return sessionStorage.getItem(\"pdfjs.history\");\n }\n return localStorage.getItem(\"pdfjs.history\");\n }\n\n async set(name, val) {\n await this._initializedPromise;\n this.file[name] = val;\n return this._writeToStorage();\n }\n\n async setMultiple(properties) {\n await this._initializedPromise;\n for (const name in properties) {\n this.file[name] = properties[name];\n }\n return this._writeToStorage();\n }\n\n async get(name, defaultValue) {\n await this._initializedPromise;\n const val = this.file[name];\n return val !== undefined ? val : defaultValue;\n }\n\n async getMultiple(properties) {\n await this._initializedPromise;\n const values = Object.create(null);\n\n for (const name in properties) {\n const val = this.file[name];\n values[name] = val !== undefined ? val : properties[name];\n }\n return values;\n }\n}\n\nexport { ViewHistory };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside ' +\n \"GENERIC build.\"\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager(options) {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions, OptionKind } from \"./app_options.js\";\n\n/**\n * BasePreferences - Abstract base class for storing persistent settings.\n * Used for settings that should be applied to all opened documents,\n * or every time the viewer is loaded.\n */\nclass BasePreferences {\n constructor() {\n if (this.constructor === BasePreferences) {\n throw new Error(\"Cannot initialize BasePreferences.\");\n }\n Object.defineProperty(this, \"defaults\", {\n value: Object.freeze(\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? AppOptions.getAll(OptionKind.PREFERENCE)\n : PDFJSDev.eval(\"DEFAULT_PREFERENCES\")\n ),\n writable: false,\n enumerable: true,\n configurable: false,\n });\n this.prefs = Object.create(null);\n\n this._initializedPromise = this._readFromStorage(this.defaults).then(\n prefs => {\n for (const name in this.defaults) {\n const prefValue = prefs?.[name];\n // Ignore preferences whose types don't match the default values.\n if (typeof prefValue === typeof this.defaults[name]) {\n this.prefs[name] = prefValue;\n }\n }\n }\n );\n }\n\n /**\n * Stub function for writing preferences to storage.\n * @param {Object} prefObj The preferences that should be written to storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been written.\n */\n async _writeToStorage(prefObj) {\n throw new Error(\"Not implemented: _writeToStorage\");\n }\n\n /**\n * Stub function for reading preferences from storage.\n * @param {Object} prefObj The preferences that should be read from storage.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the preferences that have been read.\n */\n async _readFromStorage(prefObj) {\n throw new Error(\"Not implemented: _readFromStorage\");\n }\n\n /**\n * Reset the preferences to their default values and update storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been reset.\n */\n async reset() {\n await this._initializedPromise;\n this.prefs = Object.create(null);\n return this._writeToStorage(this.defaults);\n }\n\n /**\n * Set the value of a preference.\n * @param {string} name The name of the preference that should be changed.\n * @param {boolean|number|string} value The new value of the preference.\n * @returns {Promise} A promise that is resolved when the value has been set,\n * provided that the preference exists and the types match.\n */\n async set(name, value) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Set preference: \"${name}\" is undefined.`);\n } else if (value === undefined) {\n throw new Error(\"Set preference: no value is specified.\");\n }\n const valueType = typeof value;\n const defaultType = typeof defaultValue;\n\n if (valueType !== defaultType) {\n if (valueType === \"number\" && defaultType === \"string\") {\n value = value.toString();\n } else {\n throw new Error(\n `Set preference: \"${value}\" is a ${valueType}, expected a ${defaultType}.`\n );\n }\n } else {\n if (valueType === \"number\" && !Number.isInteger(value)) {\n throw new Error(`Set preference: \"${value}\" must be an integer.`);\n }\n }\n this.prefs[name] = value;\n return this._writeToStorage(this.prefs);\n }\n\n /**\n * Get the value of a preference.\n * @param {string} name The name of the preference whose value is requested.\n * @returns {Promise} A promise resolved with a {boolean|number|string}\n * containing the value of the preference.\n */\n async get(name) {\n await this._initializedPromise;\n const defaultValue = this.defaults[name],\n prefValue = this.prefs[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Get preference: \"${name}\" is undefined.`);\n }\n return prefValue !== undefined ? prefValue : defaultValue;\n }\n\n /**\n * Get the values of all preferences.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the values of all preferences.\n */\n async getAll() {\n await this._initializedPromise;\n const obj = Object.create(null);\n\n for (const name in this.defaults) {\n const prefValue = this.prefs[name];\n obj[name] = prefValue !== undefined ? prefValue : this.defaults[name];\n }\n return obj;\n }\n}\n\nexport { BasePreferences };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n\nimport { createValidAbsoluteUrl, isPdfFile } from \"pdfjs-lib\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"CHROME || GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/download_manager\" shall not be used ' +\n \"outside CHROME and GENERIC builds.\"\n );\n}\n\nfunction download(blobUrl, filename) {\n const a = document.createElement(\"a\");\n if (!a.click) {\n throw new Error('DownloadManager: \"a.click()\" is not supported.');\n }\n a.href = blobUrl;\n a.target = \"_parent\";\n // Use a.download if available. This increases the likelihood that\n // the file is downloaded instead of opened by another PDF plugin.\n if (\"download\" in a) {\n a.download = filename;\n }\n // <a> must be in the document for recent Firefox versions,\n // otherwise .click() is ignored.\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * @implements {IDownloadManager}\n */\nclass DownloadManager {\n constructor() {\n this._openBlobUrls = new WeakMap();\n }\n\n downloadUrl(url, filename) {\n if (!createValidAbsoluteUrl(url, \"http://example.com\")) {\n console.error(`downloadUrl - not a valid URL: ${url}`);\n return; // restricted/invalid URL\n }\n download(url + \"#pdfjs.action=download\", filename);\n }\n\n downloadData(data, filename, contentType) {\n const blobUrl = URL.createObjectURL(\n new Blob([data], { type: contentType })\n );\n download(blobUrl, filename);\n }\n\n /**\n * @returns {boolean} Indicating if the data was opened.\n */\n openOrDownloadData(element, data, filename) {\n const isPdfData = isPdfFile(filename);\n const contentType = isPdfData ? \"application/pdf\" : \"\";\n\n if (isPdfData) {\n let blobUrl = this._openBlobUrls.get(element);\n if (!blobUrl) {\n blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\n this._openBlobUrls.set(element, blobUrl);\n }\n let viewerUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // The current URL is the viewer, let's use it and append the file.\n viewerUrl = \"?file=\" + encodeURIComponent(blobUrl + \"#\" + filename);\n } else if (PDFJSDev.test(\"CHROME\")) {\n // In the Chrome extension, the URL is rewritten using the history API\n // in viewer.js, so an absolute URL must be generated.\n viewerUrl =\n // eslint-disable-next-line no-undef\n chrome.runtime.getURL(\"/content/web/viewer.html\") +\n \"?file=\" +\n encodeURIComponent(blobUrl + \"#\" + filename);\n }\n\n try {\n window.open(viewerUrl);\n return true;\n } catch (ex) {\n console.error(`openOrDownloadData: ${ex}`);\n // Release the `blobUrl`, since opening it failed, and fallback to\n // downloading the PDF file.\n URL.revokeObjectURL(blobUrl);\n this._openBlobUrls.delete(element);\n }\n }\n\n this.downloadData(data, filename, contentType);\n return false;\n }\n\n /**\n * @param sourceEventType {string} Used to signal what triggered the download.\n * The version of PDF.js integrated with Firefox uses this to to determine\n * which dialog to show. \"save\" triggers \"save as\" and \"download\" triggers\n * the \"open with\" dialog.\n */\n download(blob, url, filename, sourceEventType = \"download\") {\n const blobUrl = URL.createObjectURL(blob);\n download(blobUrl, filename);\n }\n}\n\nexport { DownloadManager };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n\nimport \"../external/webL10n/l10n.js\";\nimport { fixupLangCode, getL10nFallback } from \"./l10n_utils.js\";\n\nconst webL10n = document.webL10n;\n\n/**\n * @implements {IL10n}\n */\nclass GenericL10n {\n constructor(lang) {\n this._lang = lang;\n this._ready = new Promise((resolve, reject) => {\n webL10n.setLanguage(fixupLangCode(lang), () => {\n resolve(webL10n);\n });\n });\n }\n\n async getLanguage() {\n const l10n = await this._ready;\n return l10n.getLanguage();\n }\n\n async getDirection() {\n const l10n = await this._ready;\n return l10n.getDirection();\n }\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n const l10n = await this._ready;\n return l10n.get(key, args, fallback);\n }\n\n async translate(element) {\n const l10n = await this._ready;\n return l10n.translate(element);\n }\n}\n\nexport { GenericL10n };\n","/**\n * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/*\n Additional modifications for PDF.js project:\n - Disables language initialization on page loading.\n - Disables document translation on page loading.\n - Removes consoleWarn and consoleLog and use console.log/warn directly.\n - Removes window._ assignment.\n - Remove compatibility code for OldIE.\n - Replaces `String.prototype.substr()` with `String.prototype.substring()`.\n - Removes `fireL10nReadyEvent` since the \"localized\" event it dispatches\n is unused and may clash with an identically named event in the viewer.\n*/\n\n/*jshint browser: true, devel: true, es5: true, globalstrict: true */\n'use strict';\n\ndocument.webL10n = (function(window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n\n\n /**\n * Synchronously loading l10n resources significantly minimizes flickering\n * from displaying the app with non-localized strings and then updating the\n * strings. Although this will block all script execution on this page, we\n * expect that the l10n resources are available locally on flash-storage.\n *\n * As synchronous XHR is generally considered as a bad idea, we're still\n * loading l10n resources asynchronously -- but we keep this in a setting,\n * just in case... and applications using this library should hide their\n * content until the `localized' event happens.\n */\n\n var gAsyncResourceLoading = true; // read-only\n\n\n /**\n * DOM helpers for the so-called \"HTML API\".\n *\n * These functions are written for modern browsers. For old versions of IE,\n * they're overridden in the 'startup' section at the end of this file.\n */\n\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n // TODO: support multiple and external JSON dictionaries\n return script ? JSON.parse(script.innerHTML) : null;\n }\n\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n\n function getL10nAttributes(element) {\n if (!element)\n return {};\n\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return { id: l10nId, args: args };\n }\n\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n\n // in Firefox OS with the app:// protocol, trying to XHR a non-existing\n // URL will raise an exception here -- hence this ugly try...catch.\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n\n\n /**\n * l10n resource parser:\n * - reads (async XHR) the l10n resource matching `lang';\n * - imports linked resources (synchronously) when specified;\n * - parses the text data (fills `gL10nData' and `gTextData');\n * - triggers success/failure callbacks when done.\n *\n * @param {string} href\n * URL of the l10n resource to parse.\n *\n * @param {string} lang\n * locale (language) to parse. Must be a lowercase string.\n *\n * @param {Function} successCallback\n * triggered when the l10n resource has been successfully parsed.\n *\n * @param {Function} failureCallback\n * triggered when the an error has occurred.\n *\n * @return {void}\n * uses the following global variables: gL10nData, gTextData, gTextProp.\n */\n\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n\n // handle escaped characters (backslashes) in a string\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0)\n return text;\n return text.replace(/\\\\\\\\/g, '\\\\')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\b/g, '\\b')\n .replace(/\\\\f/g, '\\f')\n .replace(/\\\\{/g, '{')\n .replace(/\\\\}/g, '}')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\'/g, \"'\");\n }\n\n // parse *.properties text data into an l10n dictionary\n // If gAsyncResourceLoading is false, then the callback will be called\n // synchronously. Otherwise it is called asynchronously.\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n\n // token expressions\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/; // TODO: escape EOLs with '\\'\n\n // parse the *.properties file into an associative array\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n\n function nextEntry() {\n // Use infinite loop instead of recursion to avoid reaching the\n // maximum recursion limit for content with many lines.\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n\n // comment or blank line?\n if (reComment.test(line))\n continue;\n\n // the extended syntax supports [lang] sections and @import rules\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) { // section start?\n // RFC 4646, section 4.4, \"All comparisons MUST be performed\n // in a case-insensitive manner.\"\n\n currentLang = match[1].toLowerCase();\n skipLang = (currentLang !== '*') &&\n (currentLang !== lang) && (currentLang !== genericLang);\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) { // @import rule?\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n\n // key-value pair\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n\n // import another *.properties file\n function loadImport(url, callback) {\n xhrLoadText(url, function(content) {\n parseRawLines(content, false, callback); // don't allow recursive imports\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n\n // fill the dictionary\n parseRawLines(text, true, function() {\n parsedPropertiesCallback(dictionary);\n });\n }\n\n // load and parse l10n data (warning: global variables are used here)\n xhrLoadText(href, function(response) {\n gTextData += response; // mostly for debug\n\n // parse *.properties text data into an l10n dictionary\n parseProperties(response, function(data) {\n\n // find attribute descriptions, if any\n for (var key in data) {\n var id, prop, index = key.lastIndexOf('.');\n if (index > 0) { // an attribute has been specified\n id = key.substring(0, index);\n prop = key.substring(index + 1);\n } else { // no attribute: assuming text content by default\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n\n // trigger callback\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n\n // load and parse all resources for the specified locale\n function loadLocale(lang, callback) {\n // RFC 4646, section 2.1 states that language tags have to be treated as\n // case-insensitive. Convert to lowercase for case-insensitive comparisons.\n if (lang) {\n lang = lang.toLowerCase();\n }\n\n callback = callback || function _callback() {};\n\n clear();\n gLanguage = lang;\n\n // check all <link type=\"application/l10n\" href=\"...\" /> nodes\n // and load the resource files\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n // we might have a pre-compiled dictionary instead\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n // early way out\n gReadyState = 'complete';\n return;\n }\n\n // start the callback when all resources are loaded\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n gReadyState = 'complete';\n }\n };\n\n // load all resource files\n function L10nResourceLink(link) {\n var href = link.href;\n // Note: If |gAsyncResourceLoading| is false, then the following callbacks\n // are synchronously called.\n this.load = function(lang, callback) {\n parseResource(href, lang, callback, function() {\n console.warn(href + ' not found.');\n // lang not found, used default resource instead\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n // Resource not loaded, but we still need to call the callback.\n callback();\n });\n };\n }\n\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n\n // clear all l10n data\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n // TODO: clear all non predefined macros.\n // There's no such macro /yet/ but we're planning to have some...\n }\n\n\n /**\n * Get rules for plural forms (shared with JetPack), see:\n * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html\n * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p\n *\n * @param {string} lang\n * locale (language) used.\n *\n * @return {Function}\n * returns a function that gives the plural form name for a given integer:\n * var fun = getPluralRules('en');\n * fun(1) -> 'one'\n * fun(0) -> 'other'\n * fun(1000) -> 'other'.\n */\n\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n\n // utility functions for plural rules methods\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n\n // list of all plural rules methods:\n // map an integer to the plural form name to use\n var pluralRules = {\n '0': function(n) {\n return 'other';\n },\n '1': function(n) {\n if ((isBetween((n % 100), 3, 10)))\n return 'few';\n if (n === 0)\n return 'zero';\n if ((isBetween((n % 100), 11, 99)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '2': function(n) {\n if (n !== 0 && (n % 10) === 0)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '3': function(n) {\n if (n == 1)\n return 'one';\n return 'other';\n },\n '4': function(n) {\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '5': function(n) {\n if ((isBetween(n, 0, 2)) && n != 2)\n return 'one';\n return 'other';\n },\n '6': function(n) {\n if (n === 0)\n return 'zero';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '7': function(n) {\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '8': function(n) {\n if ((isBetween(n, 3, 6)))\n return 'few';\n if ((isBetween(n, 7, 10)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '9': function(n) {\n if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '10': function(n) {\n if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))\n return 'few';\n if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))\n return 'one';\n return 'other';\n },\n '11': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if ((n % 10) === 0 ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 11, 14)))\n return 'many';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '12': function(n) {\n if ((isBetween(n, 2, 4)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '13': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if (n != 1 && (isBetween((n % 10), 0, 1)) ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 12, 14)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '14': function(n) {\n if ((isBetween((n % 100), 3, 4)))\n return 'few';\n if ((n % 100) == 2)\n return 'two';\n if ((n % 100) == 1)\n return 'one';\n return 'other';\n },\n '15': function(n) {\n if (n === 0 || (isBetween((n % 100), 2, 10)))\n return 'few';\n if ((isBetween((n % 100), 11, 19)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '16': function(n) {\n if ((n % 10) == 1 && n != 11)\n return 'one';\n return 'other';\n },\n '17': function(n) {\n if (n == 3)\n return 'few';\n if (n === 0)\n return 'zero';\n if (n == 6)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '18': function(n) {\n if (n === 0)\n return 'zero';\n if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)\n return 'one';\n return 'other';\n },\n '19': function(n) {\n if ((isBetween(n, 2, 10)))\n return 'few';\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '20': function(n) {\n if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(\n isBetween((n % 100), 10, 19) ||\n isBetween((n % 100), 70, 79) ||\n isBetween((n % 100), 90, 99)\n ))\n return 'few';\n if ((n % 1000000) === 0 && n !== 0)\n return 'many';\n if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))\n return 'two';\n if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))\n return 'one';\n return 'other';\n },\n '21': function(n) {\n if (n === 0)\n return 'zero';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '22': function(n) {\n if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))\n return 'one';\n return 'other';\n },\n '23': function(n) {\n if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)\n return 'one';\n return 'other';\n },\n '24': function(n) {\n if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))\n return 'few';\n if (isIn(n, [2, 12]))\n return 'two';\n if (isIn(n, [1, 11]))\n return 'one';\n return 'other';\n }\n };\n\n // return a function that gives the plural form name for a given integer\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function() { return 'other'; };\n }\n return pluralRules[index];\n }\n\n // pre-defined 'plural' macro\n gMacros.plural = function(str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n))\n return str;\n\n // TODO: support other properties (l20n still doesn't...)\n if (prop != gTextProp)\n return str;\n\n // initialize _pluralRules\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n\n // try to find a [zero|one|two] key if it's defined\n if (n === 0 && (key + '[zero]') in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && (key + '[one]') in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && (key + '[two]') in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if ((key + index) in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if ((key + '[other]') in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n\n return str;\n };\n\n\n /**\n * l10n dictionary functions\n */\n\n // fetch an l10n object, warn if not found, apply `args' if possible\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n\n /** This is where l10n expressions should be processed.\n * The plan is to support C-style expressions from the l20n project;\n * until then, only two kinds of simple expressions are supported:\n * {[ index ]} and {{ arguments }}.\n */\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n\n // replace {[macros]} with their values\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length)\n return str;\n\n // an index/macro has been found\n // Note: at the moment, only one parameter is supported\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n\n // there's no macro parser yet: it has to be defined in gMacros\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n\n // replace {{arguments}} with their values\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function(matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n\n // translate an HTML element\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id)\n return;\n\n // get the related l10n object\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n\n // translate element (TODO: security checks?)\n if (data[gTextProp]) { // XXX\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n // this element has element children: replace the content of the first\n // (non-empty) child textNode and clear other child textNodes\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n // if no (non-empty) textNode is found, insert a textNode before the\n // first element child.\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n\n for (var k in data) {\n element[k] = data[k];\n }\n }\n\n // webkit browsers don't currently support 'children' on SVG elements...\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n\n // translate an HTML subtree\n function translateFragment(element) {\n element = element || document.documentElement;\n\n // check all translatable children (= w/ a `data-l10n-id' attribute)\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n\n // translate element itself if necessary\n translateElement(element);\n }\n\n return {\n // get a localized string\n get: function(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) { // An attribute has been specified\n prop = key.substring(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n\n // debug\n getData: function() { return gL10nData; },\n getText: function() { return gTextData; },\n\n // get|set the document language\n getLanguage: function() { return gLanguage; },\n setLanguage: function(lang, callback) {\n loadLocale(lang, function() {\n if (callback)\n callback();\n });\n },\n\n // get the direction (ltr|rtl) of the current language\n getDirection: function() {\n // http://www.w3.org/International/questions/qa-scripts\n // Arabic, Hebrew, Farsi, Pashto, Urdu\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr';\n },\n\n // translate an element or document fragment\n translate: translateFragment,\n\n // this can be used to prevent race conditions\n getReadyState: function() { return gReadyState; },\n ready: function(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function() {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}) (window, document);\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getPdfFilenameFromUrl, loadScript } from \"pdfjs-lib\";\n\nasync function docPropertiesLookup(pdfDocument) {\n const url = \"\",\n baseUrl = url.split(\"#\")[0];\n // eslint-disable-next-line prefer-const\n let { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (!contentLength) {\n const { length } = await pdfDocument.getDownloadInfo();\n contentLength = length;\n }\n\n return {\n ...info,\n baseURL: baseUrl,\n filesize: contentLength,\n filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\n metadata: metadata?.getRaw(),\n authors: metadata?.get(\"dc:creator\"),\n numPages: pdfDocument.numPages,\n URL: url,\n };\n}\n\nclass GenericScripting {\n constructor(sandboxBundleSrc) {\n this._ready = loadScript(\n sandboxBundleSrc,\n /* removeScriptElement = */ true\n ).then(() => {\n return window.pdfjsSandbox.QuickJSSandbox();\n });\n }\n\n async createSandbox(data) {\n const sandbox = await this._ready;\n sandbox.create(data);\n }\n\n async dispatchEventInSandbox(event) {\n const sandbox = await this._ready;\n setTimeout(() => sandbox.dispatchEvent(event), 0);\n }\n\n async destroySandbox() {\n const sandbox = await this._ready;\n sandbox.nukeSandbox();\n }\n}\n\nexport { docPropertiesLookup, GenericScripting };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationMode, PixelsPerInch } from \"pdfjs-lib\";\nimport { PDFPrintServiceFactory, PDFViewerApplication } from \"./app.js\";\nimport { getXfaHtmlForPrinting } from \"./print_utils.js\";\n\nlet activeService = null;\nlet overlayManager = null;\n\n// Renders the page to the canvas of the given print service, and returns\n// the suggested dimensions of the output page.\nfunction renderPage(\n activeServiceOnEntry,\n pdfDocument,\n pageNumber,\n size,\n printResolution,\n optionalContentConfigPromise\n) {\n const scratchCanvas = activeService.scratchCanvas;\n\n // The size of the canvas in pixels for printing.\n const PRINT_UNITS = printResolution / PixelsPerInch.PDF;\n scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n\n const ctx = scratchCanvas.getContext(\"2d\");\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n ctx.restore();\n\n return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n const renderContext = {\n canvasContext: ctx,\n transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\n intent: \"print\",\n annotationMode: AnnotationMode.ENABLE_STORAGE,\n optionalContentConfigPromise,\n };\n return pdfPage.render(renderContext).promise;\n });\n}\n\nfunction PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise = null,\n l10n\n) {\n this.pdfDocument = pdfDocument;\n this.pagesOverview = pagesOverview;\n this.printContainer = printContainer;\n this._printResolution = printResolution || 150;\n this._optionalContentConfigPromise =\n optionalContentConfigPromise || pdfDocument.getOptionalContentConfig();\n this.l10n = l10n;\n this.currentPage = -1;\n // The temporary canvas where renderPage paints one page at a time.\n this.scratchCanvas = document.createElement(\"canvas\");\n}\n\nPDFPrintService.prototype = {\n layout() {\n this.throwIfInactive();\n\n const body = document.querySelector(\"body\");\n body.setAttribute(\"data-pdfjsprinting\", true);\n\n const hasEqualPageSizes = this.pagesOverview.every(function (size) {\n return (\n size.width === this.pagesOverview[0].width &&\n size.height === this.pagesOverview[0].height\n );\n }, this);\n if (!hasEqualPageSizes) {\n console.warn(\n \"Not all pages have the same size. The printed \" +\n \"result may be incorrect!\"\n );\n }\n\n // Insert a @page + size rule to make sure that the page size is correctly\n // set. Note that we assume that all pages have the same size, because\n // variable-size pages are not supported yet (e.g. in Chrome & Firefox).\n // TODO(robwu): Use named pages when size calculation bugs get resolved\n // (e.g. https://crbug.com/355116) AND when support for named pages is\n // added (http://www.w3.org/TR/css3-page/#using-named-pages).\n // In browsers where @page + size is not supported (such as Firefox,\n // https://bugzil.la/851441), the next stylesheet will be ignored and the\n // user has to select the correct paper size in the UI if wanted.\n this.pageStyleSheet = document.createElement(\"style\");\n const pageSize = this.pagesOverview[0];\n this.pageStyleSheet.textContent =\n \"@page { size: \" + pageSize.width + \"pt \" + pageSize.height + \"pt;}\";\n body.appendChild(this.pageStyleSheet);\n },\n\n destroy() {\n if (activeService !== this) {\n // |activeService| cannot be replaced without calling destroy() first,\n // so if it differs then an external consumer has a stale reference to\n // us.\n return;\n }\n this.printContainer.textContent = \"\";\n\n const body = document.querySelector(\"body\");\n body.removeAttribute(\"data-pdfjsprinting\");\n\n if (this.pageStyleSheet) {\n this.pageStyleSheet.remove();\n this.pageStyleSheet = null;\n }\n this.scratchCanvas.width = this.scratchCanvas.height = 0;\n this.scratchCanvas = null;\n activeService = null;\n ensureOverlay().then(function () {\n if (overlayManager.active !== \"printServiceOverlay\") {\n return; // overlay was already closed\n }\n overlayManager.close(\"printServiceOverlay\");\n });\n },\n\n renderPages() {\n if (this.pdfDocument.isPureXfa) {\n getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\n return Promise.resolve();\n }\n\n const pageCount = this.pagesOverview.length;\n const renderNextPage = (resolve, reject) => {\n this.throwIfInactive();\n if (++this.currentPage >= pageCount) {\n renderProgress(pageCount, pageCount, this.l10n);\n resolve();\n return;\n }\n const index = this.currentPage;\n renderProgress(index, pageCount, this.l10n);\n renderPage(\n this,\n this.pdfDocument,\n /* pageNumber = */ index + 1,\n this.pagesOverview[index],\n this._printResolution,\n this._optionalContentConfigPromise\n )\n .then(this.useRenderedPage.bind(this))\n .then(function () {\n renderNextPage(resolve, reject);\n }, reject);\n };\n return new Promise(renderNextPage);\n },\n\n useRenderedPage() {\n this.throwIfInactive();\n const img = document.createElement(\"img\");\n const scratchCanvas = this.scratchCanvas;\n if (\"toBlob\" in scratchCanvas) {\n scratchCanvas.toBlob(function (blob) {\n img.src = URL.createObjectURL(blob);\n });\n } else {\n img.src = scratchCanvas.toDataURL();\n }\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"printedPage\";\n wrapper.appendChild(img);\n this.printContainer.appendChild(wrapper);\n\n return new Promise(function (resolve, reject) {\n img.onload = resolve;\n img.onerror = reject;\n });\n },\n\n performPrint() {\n this.throwIfInactive();\n return new Promise(resolve => {\n // Push window.print in the macrotask queue to avoid being affected by\n // the deprecation of running print() code in a microtask, see\n // https://github.com/mozilla/pdf.js/issues/7547.\n setTimeout(() => {\n if (!this.active) {\n resolve();\n return;\n }\n print.call(window);\n // Delay promise resolution in case print() was not synchronous.\n setTimeout(resolve, 20); // Tidy-up.\n }, 0);\n });\n },\n\n get active() {\n return this === activeService;\n },\n\n throwIfInactive() {\n if (!this.active) {\n throw new Error(\"This print request was cancelled or completed.\");\n }\n },\n};\n\nconst print = window.print;\nwindow.print = function () {\n if (activeService) {\n console.warn(\"Ignored window.print() because of a pending print job.\");\n return;\n }\n ensureOverlay().then(function () {\n if (activeService) {\n overlayManager.open(\"printServiceOverlay\");\n }\n });\n\n try {\n dispatchEvent(\"beforeprint\");\n } finally {\n if (!activeService) {\n console.error(\"Expected print service to be initialized.\");\n ensureOverlay().then(function () {\n if (overlayManager.active === \"printServiceOverlay\") {\n overlayManager.close(\"printServiceOverlay\");\n }\n });\n return; // eslint-disable-line no-unsafe-finally\n }\n const activeServiceOnEntry = activeService;\n activeService\n .renderPages()\n .then(function () {\n return activeServiceOnEntry.performPrint();\n })\n .catch(function () {\n // Ignore any error messages.\n })\n .then(function () {\n // aborts acts on the \"active\" print request, so we need to check\n // whether the print request (activeServiceOnEntry) is still active.\n // Without the check, an unrelated print request (created after aborting\n // this print request while the pages were being generated) would be\n // aborted.\n if (activeServiceOnEntry.active) {\n abort();\n }\n });\n }\n};\n\nfunction dispatchEvent(eventType) {\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventType, false, false, \"custom\");\n window.dispatchEvent(event);\n}\n\nfunction abort() {\n if (activeService) {\n activeService.destroy();\n dispatchEvent(\"afterprint\");\n }\n}\n\nfunction renderProgress(index, total, l10n) {\n const progressContainer = document.getElementById(\"printServiceOverlay\");\n const progress = Math.round((100 * index) / total);\n const progressBar = progressContainer.querySelector(\"progress\");\n const progressPerc = progressContainer.querySelector(\".relative-progress\");\n progressBar.value = progress;\n l10n.get(\"print_progress_percent\", { progress }).then(msg => {\n progressPerc.textContent = msg;\n });\n}\n\nwindow.addEventListener(\n \"keydown\",\n function (event) {\n // Intercept Cmd/Ctrl + P in all browsers.\n // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera\n if (\n event.keyCode === /* P= */ 80 &&\n (event.ctrlKey || event.metaKey) &&\n !event.altKey &&\n (!event.shiftKey || window.chrome || window.opera)\n ) {\n window.print();\n\n // The (browser) print dialog cannot be prevented from being shown in\n // IE11.\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n },\n true\n);\n\nif (\"onbeforeprint\" in window) {\n // Do not propagate before/afterprint events when they are not triggered\n // from within this polyfill. (FF / Chrome 63+).\n const stopPropagationIfNeeded = function (event) {\n if (event.detail !== \"custom\" && event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n }\n };\n window.addEventListener(\"beforeprint\", stopPropagationIfNeeded);\n window.addEventListener(\"afterprint\", stopPropagationIfNeeded);\n}\n\nlet overlayPromise;\nfunction ensureOverlay() {\n if (!overlayPromise) {\n overlayManager = PDFViewerApplication.overlayManager;\n if (!overlayManager) {\n throw new Error(\"The overlay manager has not yet been initialized.\");\n }\n\n overlayPromise = overlayManager.register(\n \"printServiceOverlay\",\n document.getElementById(\"printServiceOverlay\"),\n abort,\n true\n );\n document.getElementById(\"printCancel\").onclick = abort;\n }\n return overlayPromise;\n}\n\nPDFPrintServiceFactory.instance = {\n supportsPrinting: true,\n\n createPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n ) {\n if (activeService) {\n throw new Error(\"The print service is created and active.\");\n }\n activeService = new PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n );\n return activeService;\n },\n};\n\nexport { PDFPrintService };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getXfaPageViewport, PixelsPerInch } from \"pdfjs-lib\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\n const xfaHtml = pdfDocument.allXfaHtml;\n const linkService = new SimpleLinkService();\n const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;\n\n for (const xfaPage of xfaHtml.children) {\n const page = document.createElement(\"div\");\n page.className = \"xfaPrintedPage\";\n printContainer.appendChild(page);\n\n const builder = new XfaLayerBuilder({\n pageDiv: page,\n pdfPage: null,\n annotationStorage: pdfDocument.annotationStorage,\n linkService,\n xfaHtml: xfaPage,\n });\n const viewport = getXfaPageViewport(xfaPage, { scale });\n\n builder.render(viewport, \"print\");\n }\n}\n\nexport { getXfaHtmlForPrinting };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions } from \"./app_options.js\";\nimport { PDFViewerApplication } from \"./app.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nwindow.PDFViewerApplication = PDFViewerApplication;\nwindow.PDFViewerApplicationOptions = AppOptions;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n var defaultUrl; // eslint-disable-line no-var\n\n (function rewriteUrlClosure() {\n // Run this code outside DOMContentLoaded to make sure that the URL\n // is rewritten as soon as possible.\n const queryString = document.location.search.slice(1);\n const m = /(^|&)file=([^&]*)/.exec(queryString);\n defaultUrl = m ? decodeURIComponent(m[2]) : \"\";\n\n // Example: chrome-extension://.../http://example.com/file.pdf\n const humanReadableUrl = \"/\" + defaultUrl + location.hash;\n history.replaceState(history.state, \"\", humanReadableUrl);\n if (top === window) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n })();\n}\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n require(\"./firefoxcom.js\");\n require(\"./firefox_print_service.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n require(\"./genericcom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n require(\"./chromecom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME || GENERIC\")) {\n require(\"./pdf_print_service.js\");\n}\n\nfunction getViewerConfiguration() {\n let errorWrapper = null;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n errorWrapper = {\n container: document.getElementById(\"errorWrapper\"),\n errorMessage: document.getElementById(\"errorMessage\"),\n closeButton: document.getElementById(\"errorClose\"),\n errorMoreInfo: document.getElementById(\"errorMoreInfo\"),\n moreInfoButton: document.getElementById(\"errorShowMore\"),\n lessInfoButton: document.getElementById(\"errorShowLess\"),\n };\n }\n\n return {\n appContainer: document.body,\n mainContainer: document.getElementById(\"viewerContainer\"),\n viewerContainer: document.getElementById(\"viewer\"),\n toolbar: {\n container: document.getElementById(\"toolbarViewer\"),\n numPages: document.getElementById(\"numPages\"),\n pageNumber: document.getElementById(\"pageNumber\"),\n scaleSelect: document.getElementById(\"scaleSelect\"),\n customScaleOption: document.getElementById(\"customScaleOption\"),\n previous: document.getElementById(\"previous\"),\n next: document.getElementById(\"next\"),\n zoomIn: document.getElementById(\"zoomIn\"),\n zoomOut: document.getElementById(\"zoomOut\"),\n viewFind: document.getElementById(\"viewFind\"),\n openFile: document.getElementById(\"openFile\"),\n print: document.getElementById(\"print\"),\n presentationModeButton: document.getElementById(\"presentationMode\"),\n download: document.getElementById(\"download\"),\n viewBookmark: document.getElementById(\"viewBookmark\"),\n },\n secondaryToolbar: {\n toolbar: document.getElementById(\"secondaryToolbar\"),\n toggleButton: document.getElementById(\"secondaryToolbarToggle\"),\n toolbarButtonContainer: document.getElementById(\n \"secondaryToolbarButtonContainer\"\n ),\n presentationModeButton: document.getElementById(\n \"secondaryPresentationMode\"\n ),\n openFileButton: document.getElementById(\"secondaryOpenFile\"),\n printButton: document.getElementById(\"secondaryPrint\"),\n downloadButton: document.getElementById(\"secondaryDownload\"),\n viewBookmarkButton: document.getElementById(\"secondaryViewBookmark\"),\n firstPageButton: document.getElementById(\"firstPage\"),\n lastPageButton: document.getElementById(\"lastPage\"),\n pageRotateCwButton: document.getElementById(\"pageRotateCw\"),\n pageRotateCcwButton: document.getElementById(\"pageRotateCcw\"),\n cursorSelectToolButton: document.getElementById(\"cursorSelectTool\"),\n cursorHandToolButton: document.getElementById(\"cursorHandTool\"),\n scrollPageButton: document.getElementById(\"scrollPage\"),\n scrollVerticalButton: document.getElementById(\"scrollVertical\"),\n scrollHorizontalButton: document.getElementById(\"scrollHorizontal\"),\n scrollWrappedButton: document.getElementById(\"scrollWrapped\"),\n spreadNoneButton: document.getElementById(\"spreadNone\"),\n spreadOddButton: document.getElementById(\"spreadOdd\"),\n spreadEvenButton: document.getElementById(\"spreadEven\"),\n documentPropertiesButton: document.getElementById(\"documentProperties\"),\n },\n sidebar: {\n // Divs (and sidebar button)\n outerContainer: document.getElementById(\"outerContainer\"),\n viewerContainer: document.getElementById(\"viewerContainer\"),\n toggleButton: document.getElementById(\"sidebarToggle\"),\n // Buttons\n thumbnailButton: document.getElementById(\"viewThumbnail\"),\n outlineButton: document.getElementById(\"viewOutline\"),\n attachmentsButton: document.getElementById(\"viewAttachments\"),\n layersButton: document.getElementById(\"viewLayers\"),\n // Views\n thumbnailView: document.getElementById(\"thumbnailView\"),\n outlineView: document.getElementById(\"outlineView\"),\n attachmentsView: document.getElementById(\"attachmentsView\"),\n layersView: document.getElementById(\"layersView\"),\n // View-specific options\n outlineOptionsContainer: document.getElementById(\n \"outlineOptionsContainer\"\n ),\n currentOutlineItemButton: document.getElementById(\"currentOutlineItem\"),\n },\n sidebarResizer: {\n outerContainer: document.getElementById(\"outerContainer\"),\n resizer: document.getElementById(\"sidebarResizer\"),\n },\n findBar: {\n bar: document.getElementById(\"findbar\"),\n toggleButton: document.getElementById(\"viewFind\"),\n findField: document.getElementById(\"findInput\"),\n highlightAllCheckbox: document.getElementById(\"findHighlightAll\"),\n caseSensitiveCheckbox: document.getElementById(\"findMatchCase\"),\n matchDiacriticsCheckbox: document.getElementById(\"findMatchDiacritics\"),\n entireWordCheckbox: document.getElementById(\"findEntireWord\"),\n findMsg: document.getElementById(\"findMsg\"),\n findResultsCount: document.getElementById(\"findResultsCount\"),\n findPreviousButton: document.getElementById(\"findPrevious\"),\n findNextButton: document.getElementById(\"findNext\"),\n },\n passwordOverlay: {\n overlayName: \"passwordOverlay\",\n container: document.getElementById(\"passwordOverlay\"),\n label: document.getElementById(\"passwordText\"),\n input: document.getElementById(\"password\"),\n submitButton: document.getElementById(\"passwordSubmit\"),\n cancelButton: document.getElementById(\"passwordCancel\"),\n },\n documentProperties: {\n overlayName: \"documentPropertiesOverlay\",\n container: document.getElementById(\"documentPropertiesOverlay\"),\n closeButton: document.getElementById(\"documentPropertiesClose\"),\n fields: {\n fileName: document.getElementById(\"fileNameField\"),\n fileSize: document.getElementById(\"fileSizeField\"),\n title: document.getElementById(\"titleField\"),\n author: document.getElementById(\"authorField\"),\n subject: document.getElementById(\"subjectField\"),\n keywords: document.getElementById(\"keywordsField\"),\n creationDate: document.getElementById(\"creationDateField\"),\n modificationDate: document.getElementById(\"modificationDateField\"),\n creator: document.getElementById(\"creatorField\"),\n producer: document.getElementById(\"producerField\"),\n version: document.getElementById(\"versionField\"),\n pageCount: document.getElementById(\"pageCountField\"),\n pageSize: document.getElementById(\"pageSizeField\"),\n linearized: document.getElementById(\"linearizedField\"),\n },\n },\n errorWrapper,\n printContainer: document.getElementById(\"printContainer\"),\n openFileInputName: \"fileInput\",\n debuggerScriptPath: \"./debugger.js\",\n };\n}\n\nfunction webViewerLoad() {\n const config = getViewerConfiguration();\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n Promise.all([\n import(\"pdfjs-web/genericcom.js\"),\n import(\"pdfjs-web/pdf_print_service.js\"),\n ]).then(function ([genericCom, pdfPrintService]) {\n PDFViewerApplication.run(config);\n });\n } else {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n AppOptions.set(\"defaultUrl\", defaultUrl);\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // Give custom implementations of the default viewer a simpler way to\n // set various `AppOptions`, by dispatching an event once all viewer\n // files are loaded but *before* the viewer initialization has run.\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"webviewerloaded\", true, true, {\n source: window,\n });\n try {\n // Attempt to dispatch the event at the embedding `document`,\n // in order to support cases where the viewer is embedded in\n // a *dynamically* created <iframe> element.\n parent.document.dispatchEvent(event);\n } catch (ex) {\n // The viewer could be in e.g. a cross-origin <iframe> element,\n // fallback to dispatching the event at the current `document`.\n console.error(`webviewerloaded: ${ex}`);\n document.dispatchEvent(event);\n }\n }\n\n PDFViewerApplication.run(config);\n }\n}\n\n// Block the \"load\" event until all pages are loaded, to ensure that printing\n// works in Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\nif (document.blockUnblockOnload) {\n document.blockUnblockOnload(true);\n}\n\nif (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n) {\n webViewerLoad();\n} else {\n document.addEventListener(\"DOMContentLoaded\", webViewerLoad, true);\n}\n\nexport { PDFViewerApplication, AppOptions as PDFViewerApplicationOptions };\n"],"names":["compatibilityParams","Object","create","userAgent","navigator","platform","maxTouchPoints","isAndroid","test","isIOS","checkCanvasSizeLimitation","maxCanvasPixels","OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","annotationMode","value","kind","cursorToolOnLoad","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","compatibility","pdfBugEnabled","printResolution","renderer","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","disablePreferences","locale","language","sandboxBundleSrc","userOptions","AppOptions","constructor","Error","get","name","userOption","undefined","defaultOption","getAll","options","valueType","Number","isInteger","set","setAll","remove","_hasUserOptions","keys","length","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","DefaultExternalServices","updateFindControlState","data","updateFindMatchesCount","initPassiveLoading","callbacks","fallback","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","location","hash","substring","_initializedCapability","createPromiseCapability","_fellback","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","parent","url","baseUrl","_downloadUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_docStats","_wheelUnusedTicks","_idleCallbacks","Set","initialize","_readPreferences","_parseHashParameters","_forceCssTheme","_initializeL10n","LinkTarget","NONE","TOP","_initializeViewerComponents","bindEvents","bindWindowEvents","appContainer","documentElement","translate","then","dispatch","source","resolve","console","warn","reason","error","message","params","parseQueryString","waitOn","push","loadFakeWorker","has","TextLayerMode","DISABLE","viewer","viewerContainer","classList","add","enabled","split","initPDFBug","Promise","all","dir","getDirection","getElementsByTagName","cssTheme","values","includes","styleSheet","styleSheets","cssRules","i","ii","rule","CSSMediaRule","media","deleteRule","darkRules","exec","cssText","insertRule","AutomationEventBus","EventBus","OverlayManager","PDFRenderingQueue","onIdle","_cleanup","bind","PDFLinkService","findController","PDFFindController","linkService","PDFScriptingManager","scriptingFactory","docPropertiesLookup","_scriptingDocProperties","container","mainContainer","PDFViewer","renderingQueue","scriptingManager","setViewer","PDFThumbnailViewer","sidebar","thumbnailView","setThumbnailViewer","PDFHistory","setHistory","findBar","PDFFindBar","PDFDocumentProperties","documentProperties","PDFCursorTools","Toolbar","SecondaryToolbar","supportsFullscreen","PDFPresentationMode","passwordPrompt","PasswordPrompt","passwordOverlay","PDFOutlineViewer","outlineView","PDFAttachmentViewer","attachmentsView","PDFLayerViewer","layersView","PDFSidebar","elements","onToggled","forceRendering","PDFSidebarResizer","sidebarResizer","run","config","webViewerInitialized","initialized","settled","initializedPromise","promise","zoomIn","steps","isInPresentationMode","increaseScale","zoomOut","decreaseScale","zoomReset","currentScaleValue","DEFAULT_SCALE_VALUE","pagesCount","numPages","page","currentPageNumber","val","supportsPrinting","PDFPrintServiceFactory","instance","fullscreenEnabled","loadingBar","bar","ProgressBar","setTitleUsingUrl","downloadUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","ex","setTitle","_docFilename","_hideViewBookmark","viewBookmark","hidden","viewBookmarkButton","_cancelIdleCallbacks","size","callback","cancelIdleCallback","clear","close","_unblockDocumentLoadEvent","errorWrapper","annotationStorage","_annotationStorageModified","save","sourceEventType","promises","destroy","setDocument","externalLinkEnabled","destroyPromise","reset","PDFBug","cleanup","open","file","args","workerParameters","key","GlobalWorkerOptions","parameters","originalUrl","apiParameters","loadingTask","getDocument","onPassword","updateCallback","setUpdateCallback","onProgress","loaded","total","progress","onUnsupportedFeature","load","InvalidPDFException","MissingPDFException","UnexpectedResponseException","msg","_documentError","_ensureDownloadComplete","download","filename","getData","blob","Blob","type","dispatchWillSave","saveDocument","dispatchDidSave","downloadOrSave","featureId","moreInfo","_otherError","moreInfoText","version","build","stack","lineNumber","line","errorWrapperConfig","errorMessage","textContent","closeButton","onclick","errorMoreInfo","moreInfoButton","lessInfoButton","style","height","scrollHeight","oncontextmenu","noContextMenuHandler","parts","join","level","percent","Math","round","isNaN","loadingParams","disableAutoFetchLoadingBarTimeout","clearTimeout","show","setTimeout","hide","getDownloadInfo","firstPagePromise","pageLayoutPromise","getPageLayout","catch","pageModePromise","getPageMode","openActionPromise","getOpenAction","setPagesCount","baseDocumentUrl","onePageRendered","pagesPromise","storedPromise","ViewHistory","fingerprints","getMultiple","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","setWidth","_initializeAnnotationStorageCallbacks","animationStarted","timeStamp","stored","pageLayout","pageMode","openAction","_initializePdfHistory","fingerprint","initialDest","dest","parseInt","apiPageModeToSidebarView","modes","apiPageLayoutToViewerModes","setInitialView","focus","race","hasEqualPageSizes","update","_initializeAutoPrint","timestamp","getOutline","outline","render","getAttachments","attachments","optionalContentConfigPromise","optionalContentConfig","requestIdleCallback","_collectTelemetry","delete","timeout","_initializePageLabels","_initializeMetadata","_on","once","baseURL","filesize","getRaw","authors","URL","markInfo","getMarkInfo","tagged","Marked","javaScript","getJavaScript","triggerAutoPrint","action","some","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","triggerPrinting","info","contentDispositionFilename","contentLength","getMetadata","log","PDFFormatVersion","Producer","trim","Creator","pdfTitle","Title","metadataTitle","IsXFAPresent","IsAcroFormPresent","isPureXfa","forms","renderForms","IsSignaturesPresent","signatures","versionId","replace","generatorId","producer","toLowerCase","generator","formType","labels","getPageLabels","numLabels","standardLabels","emptyLabels","label","toString","setPageLabels","setPageNumber","currentPageLabel","resetHistory","updateUrl","initialRotation","JSON","stringify","explicitDest","pageNumber","onSetModified","addEventListener","beforeUnload","onResetModified","removeEventListener","storedHash","setRotation","angle","isValidRotation","pagesRotation","setViewerModes","scroll","spread","isValidScrollMode","isValidSpreadMode","setHash","RendererType","SVG","printing","isThumbnailViewEnabled","isThumbnailViewVisible","renderHighestPriority","beforePrint","dispatchWillPrint","pageViewsReady","alert","pagesOverview","getPagesOverview","printContainer","createPrintService","layout","afterPrint","dispatchDidPrint","resetModified","rotatePages","delta","requestPresentationMode","request","print","webViewerResize","webViewerHashchange","webViewerPageRendered","webViewerUpdateViewarea","webViewerPageChanging","webViewerScaleChanging","webViewerRotationChanging","webViewerSidebarViewChanged","webViewerPageMode","webViewerNamedAction","webViewerPresentationModeChanged","webViewerPresentationMode","webViewerPrint","webViewerDownload","webViewerSave","webViewerFirstPage","webViewerLastPage","webViewerNextPage","webViewerPreviousPage","webViewerZoomIn","webViewerZoomOut","webViewerZoomReset","webViewerPageNumberChanged","webViewerScaleChanged","webViewerRotateCw","webViewerRotateCcw","webViewerOptionalContentConfig","webViewerSwitchScrollMode","webViewerScrollModeChanged","webViewerSwitchSpreadMode","webViewerSpreadModeChanged","webViewerDocumentProperties","webViewerFindFromUrlHash","webViewerUpdateFindMatchesCount","webViewerUpdateFindControlState","reportPageStatsPDFBug","webViewerFileInputChange","webViewerOpenFile","windowResize","windowHashChange","windowBeforePrint","windowAfterPrint","windowUpdateFromSandbox","event","detail","webViewerVisibilityChange","webViewerWheel","passive","webViewerTouchStart","webViewerClick","webViewerKeyDown","unbindEvents","_off","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","sign","floor","abs","blockUnblockOnload","_reportDocumentStatsTelemetry","stats","scriptingReady","ready","validateFileURL","HOSTED_VIEWER_ORIGINS","viewerOrigin","href","origin","fileOrigin","loadScript","PDFWorker","enabledTabs","debuggerScriptPath","init","OPS","Stats","pageView","getPageView","pageStats","queryString","search","fileInput","createElement","id","openFileInputName","className","setAttribute","body","appendChild","File","FileReader","FileList","openFile","openFileButton","evt","files","target","preventDefault","dataTransfer","dropEffect","printButton","presentationModeButton","viewFind","webViewerOpenFileViaURL","updateLoadingIndicatorState","getThumbnail","setImage","mode","view","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","switchView","select","toggle","presentationModeState","state","setMultiple","scale","left","top","getAnchorUrl","pdfOpenParams","currentPage","loading","renderingState","RenderingStates","FINISHED","popStateInProgress","createObjectURL","getElementById","click","nextPage","previousPage","goToPage","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","matchDiacritics","matchesCount","updateResultsCount","previous","rawQuery","result","updateUIState","setPageScale","presetValue","pageLabel","scrollThumbnailIntoView","visibilityState","setZoomDisabledTimeout","zoomDisabledTimeout","deltaMode","normalizeWheelEventDirection","previousScale","currentScale","WheelEvent","DOM_DELTA_LINE","DOM_DELTA_PAGE","PIXELS_PER_LINE_SCALE","scaleCorrectionFactor","rect","getBoundingClientRect","dx","clientX","dy","clientY","touches","isOpen","containsElement","contains","toggleButton","active","isViewerInPresentationMode","handled","ensureViewerFocused","cmd","altKey","shiftKey","keyCode","eventState","assign","curElement","getActiveOrFocusedElement","curElementTagName","tagName","toUpperCase","isContentEditable","turnPage","turnOnlyIfPageFit","isVerticalScrollbarEnabled","isHorizontalScrollbarEnabled","opened","switchTool","CursorTool","SELECT","HAND","returnValue","DEFAULT_SCALE","DEFAULT_SCALE_DELTA","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","LOADINGBAR_END_OFFSET_VAR","RUNNING","PAUSED","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","CANVAS","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","PAGE","ODD","EVEN","OutputScale","pixelRatio","devicePixelRatio","sx","sy","scaled","scrollIntoView","element","spot","scrollMatches","offsetParent","offsetY","offsetTop","clientTop","offsetX","offsetLeft","clientLeft","clientHeight","clientWidth","scrollWidth","getComputedStyle","overflow","watchScroll","viewAreaElement","debounceScroll","rAF","requestAnimationFrame","viewAreaElementScrolled","currentX","lastX","right","currentY","lastY","down","_eventHandler","Map","URLSearchParams","NullCharactersRegExp","InvisibleCharactersRegExp","removeNullCharacters","str","replaceInvisible","binarySearchFirstItem","items","condition","start","minIndex","maxIndex","currentIndex","currentItem","approximateFraction","x","xinv","limit","x_","a","b","c","d","p","q","roundToDivide","div","r","getPageSizeInches","userUnit","rotate","x1","y1","x2","y2","changeOrientation","width","backtrackBeforeAllVisibleElements","index","views","elt","pageTop","getVisibleElements","scrollEl","sortByVisibility","horizontal","rtl","bottom","isElementBottomAfterViewTop","elementBottom","isElementNextAfterViewHorizontally","elementLeft","elementRight","visible","ids","numViews","firstVisibleElementInd","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","max","hiddenWidth","fractionHeight","fractionWidth","y","widthPercent","first","last","sort","pc","hypot","deltaX","deltaY","atan2","PI","normalizeWheelEventDelta","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","isPortraitOrientation","clamp","v","min","units","querySelector","parentNode","_updateBar","_indeterminate","progressSize","_percent","scrollbarWidth","offsetWidth","doc","setProperty","curRoot","curActiveOrFocused","activeElement","shadowRoot","WaitOnType","EVENT","TIMEOUT","waitOnEventOrTimeout","delay","reject","handler","eventHandler","timeoutHandler","_listeners","on","eventName","listener","external","off","eventListeners","externalListeners","slice","splice","pdfjsLib","__non_webpack_require__","module","exports","ZOOM","activeBeforePresentationMode","handTool","GrabToPan","_addEventListeners","activeTool","tool","disableActiveTool","deactivate","activate","_dispatchEvent","previouslyActive","CSS_CLASS_GRAB","ownerDocument","ignoreTarget","onActiveChanged","_onMouseDown","onMouseDown","_onMouseMove","onMouseMove","_endPan","endPan","overlay","node","matches","button","originalTarget","e","scrollLeftStart","scrollTopStart","clientXStart","clientYStart","stopPropagation","focusedElement","blur","buttons","xDiff","yDiff","scrollTo","behavior","DEFAULT_LINK_REL","SELF","BLANK","PARENT","addLinkAttributes","link","rel","urlNullRemoved","targetStr","pagesRefCache","_ignoreDestinationZoom","goToDestinationHelper","rawDest","namedDest","destRef","_cachedPageNumber","getPageIndex","pageIndex","cachePageRef","pushCurrentPosition","scrollPageIntoView","destArray","goToDestination","getDestination","Array","isArray","pageLabelToPageNumber","pushPage","newWindow","getDestinationHash","escape","anchor","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","unescape","parse","isValidExplicitDestination","executeNamedAction","back","forward","pageNum","pageRef","refStr","gen","num","isPageVisible","isPageCached","destLength","allowNull","param","SimpleLinkService","_overlays","_active","_keyDownBound","_keyDown","register","callerCloseMethod","canForceClose","unregister","_closeThroughCaller","overlayName","input","submitButton","cancelButton","_isViewerEmbedded","verify","cancel","passwordIncorrect","PasswordResponses","INCORRECT_PASSWORD","password","BaseTreeViewer","_appendAttachment","keepRenderedCapability","_attachments","_renderedCapability","_pendingDispatchEvent","attachmentsCount","_bindLink","content","openOrDownloadData","names","localeCompare","fragment","createDocumentFragment","item","_normalizeTextContent","_finishRendering","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_pdfDocument","_lastToggleIsShow","_currentTreeItem","count","_addToggleButton","toggler","shouldShowAll","_toggleTreeItem","insertBefore","firstChild","root","querySelectorAll","_toggleAllTreeItems","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","firstElementChild","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","getPageName","isPortrait","pageNames","fields","_reset","_currentPageNumber","_pagesRotation","_isNonMetricLocale","getLanguage","freezeFieldData","defineProperty","freeze","writable","enumerable","configurable","_dataAvailableCapability","fieldData","_updateUI","fileName","fileSize","creationDate","modificationDate","pageSize","isLinearized","_parseFileSize","_parseDate","CreationDate","ModDate","getPage","_parsePageSize","_parseLinearization","IsLinearized","author","Author","subject","Subject","keywords","Keywords","creator","pageCount","linearized","kb","mb","size_mb","toPrecision","toLocaleString","size_kb","size_b","pageSizeInches","sizeInches","sizeMillimeters","rawName","exactMillimeters","intMillimeters","unit","orientation","inputDate","dateObject","PDFDateString","toDateObject","date","toLocaleDateString","time","toLocaleTimeString","MATCHES_COUNT_LIMIT","findField","highlightAllCheckbox","caseSensitiveCheckbox","matchDiacriticsCheckbox","entireWordCheckbox","findMsg","findResultsCount","findPreviousButton","findNextButton","dispatchEvent","_adjustWidth","findPrev","checked","status","FindState","FOUND","PENDING","NOT_FOUND","current","matchCountMsg","findbarHeight","inputContainerHeight","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","DIACRITICS_EXCEPTION","DIACRITICS_EXCEPTION_STR","map","String","fromCharCode","DIACRITICS_REG_EXP","SPECIAL_CHARS_REG_EXP","NOT_DIACRITIC_FROM_END_REG_EXP","NOT_DIACRITIC_FROM_START_REG_EXP","normalizationRegex","normalize","text","RegExp","rawDiacriticsPositions","m","normalized","positions","k","shift","shiftOrigin","eol","hasDiacritics","match","p1","p2","p3","p4","replacement","jj","j","hasTrailingDashEOL","endsWith","len","charAt","getOriginalIndex","diffs","pos","end","_linkService","_eventBus","_onFind","_onFindBarClose","executeCommand","highlightMatches","_highlightMatches","pageMatches","_pageMatches","pageMatchesLength","_pageMatchesLength","selected","_selected","_state","_firstPageCapability","_shouldDirtyMatch","_dirtyMatch","_updateUIState","_extractText","findbarClosed","pendingTimeout","_findTimeout","_nextMatch","_updateAllPages","scrollMatchIntoView","selectedLeft","matchIndex","_scrollMatches","matchIdx","pageIdx","_offset","wrapped","_extractTextPromises","_pageContents","_pageDiffs","_hasDiacritics","_matchesCountTotal","_pagesToSearch","_pendingFindMatches","_resumePageIdx","_query","_rawQuery","_normalizedQuery","_isEntireWord","startIdx","charCodeAt","getCharacterType","_calculateRegExpMatch","pageContent","matchesLength","matchPos","matchLen","_convertToRegExpString","isUnicode","p5","trailingSpaces","_calculateMatch","reverse","isUnicodePart","queryPart","flags","_updatePage","_nextPageMatch","pageMatchesCount","_updateUIResultsCount","extractTextCapability","getTextContent","textItems","strBuf","hasEOL","currentPageIndex","offset","numPageMatches","_updateMatch","_advanceOffsetPage","_matchesReady","numMatches","found","_requestMatchesCount","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","isAlphabeticalScript","charCode","isAscii","isAsciiAlpha","isAsciiDigit","isAsciiSpace","isHan","isKatakana","isHiragana","isHalfwidthKatakana","isThai","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","getCurrentHash","_initialized","_fingerprint","_isViewerInPresentationMode","_isPagesLoaded","reInitialized","_updateUrl","_bindEvents","history","_popStateInProgress","_blockHashChange","_currentHash","_numPositionUpdates","_uid","_maxUid","_destination","_position","_isValidState","_parseCurrentHash","_pushOrReplaceState","destination","_updateInternalState","uid","_initialRotation","_initialBookmark","_pageHide","_unbindEvents","_updateViewareaTimeout","_isValidPage","forceReplace","isDestHashesEqual","isDestArraysEqual","_tryPushCurrentPosition","shouldReplace","newState","newUrl","startsWith","replaceState","pushState","temporary","position","checkReload","perfEntry","performance","getEntriesByType","removeTemporary","checkNameddest","nameddest","_updateViewarea","_popState","newHash","hashChanged","updateViewarea","popState","pageHide","destHash","pushHash","firstDest","secondDest","isEntryEqual","second","_resetLayers","_optionalContentConfig","layersCount","groupId","setVisibility","_setNestedName","fontStyle","groups","getOrder","queue","levelData","itemsDiv","order","group","getGroup","getOptionalContentConfig","_currentOutlineItem","_currentOutlineItemCapability","_sidebarView","_outline","_pageNumberToDestHashCapability","outlineCount","currentOutlineItemPromise","_setStyles","bold","italic","fontWeight","totalCount","nestedCount","nestedItems","pageNumberToDestHash","_getPageNumberToDestHash","linkElement","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","contextMenuOpen","mouseScrollTimeStamp","mouseScrollDelta","touchSwipeState","switchInProgress","requestFullscreen","addFullscreenChangeListeners","setSwitchInProgress","notifyStateChange","scaleValue","mouseWheel","currentTime","Date","now","storedTime","resetMouseScrollState","totalDelta","success","removeFullscreenChangeListeners","resetSwitchInProgress","enter","addWindowListeners","showControls","getSelection","removeAllRanges","exit","removeWindowListeners","hideControls","mouseDown","isInternalLink","contextMenu","controlsTimeout","touchSwipe","startX","pageX","startY","pageY","endX","endY","absAngle","showControlsBind","mouseDownBind","mouseWheelBind","resetMouseScrollStateBind","contextMenuBind","touchSwipeBind","fullscreenChange","fullscreenElement","fullscreenChangeBind","CLEANUP_TIMEOUT","highestPriorityPage","idleTimeout","isHighestPriority","renderingId","hasViewer","currentlyVisiblePages","getHighestPriority","scrolledDown","preRenderExtra","visibleViews","numVisible","isViewFinished","firstId","lastId","visibleIds","holeId","holeView","preRenderIndex","preRenderView","renderView","resume","draw","finally","RenderingCancelledException","_pdfViewer","_closeCapability","_destroyCapability","_scripting","_mouseState","_ready","_sandboxBundleSrc","_scriptingFactory","_docPropertiesLookup","_destroyScripting","objects","calculationOrder","docActions","getFieldObjects","getCalculationOrderIds","getJSActions","_createScripting","_internalEvents","_updateFromSandbox","dispatchEventInSandbox","_dispatchPageClose","_dispatchPageOpen","_pageOpenPending","_domEvents","isDown","docProperties","_getDocProperties","createSandbox","appInfo","docInfo","actions","mouseState","_visitedPages","isChangingPresentationMode","siblings","command","elementId","CustomEvent","setValue","visitedPages","actionsPromise","destroySandbox","UI_NOTIFICATION_CLASS","outerContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","_outlineOptionsContainer","outlineOptionsContainer","_currentOutlineItemButton","currentOutlineItemButton","_hideUINotification","disabled","visibleView","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","_switchView","forceOpen","isViewChanged","shouldForceRendering","_updateThumbnailViewer","_forceRendering","_showUINotification","onTreeLoaded","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","isRTL","sidebarOpen","_width","_outerContainerWidth","resizer","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","mouseMove","mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","_scrollUpdated","_resetView","_setImageDisabled","_thumbnails","_getVisibleThumbs","prevThumbnailView","shouldScroll","updateArgs","thumbnail","TempImageFactory","destroyCanvas","_pageLabels","_optionalContentConfigPromise","_cancelRendering","firstPdfPage","viewport","getViewport","checkSetImageDisabled","PDFThumbnailView","defaultViewport","clone","firstThumbnailView","setPdfPage","cancelRendering","setPageLabel","ensurePdfPageLoaded","thumbView","getScrollAhead","visibleThumbs","scrollAhead","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvas","getCanvas","mozOpaque","ctx","getContext","alpha","fillStyle","fillRect","restore","pdfPageRotate","renderTask","_checkSetImageDisabled","pageWidth","pageHeight","pageRatio","canvasWidth","canvasHeight","_thumbPageTitle","ring","borderAdjustment","totalRotation","removeAttribute","canvas","image","_getPageDrawContext","upscaleFactor","outputScale","transform","_convertCanvasToImage","reducedCanvas","_reduceImage","_thumbPageCanvas","src","toDataURL","finishRenderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","onContinue","resultPromise","pageCached","img","drawImage","reducedWidth","reducedHeight","reducedImage","reducedImageCtx","BaseViewer","PDFSinglePageViewer","_scrollMode","_spreadMode","_updateScrollMode","_updateSpreadMode","DEFAULT_CACHE_SIZE","ENABLE_PERMISSIONS_CLASS","PagesCountLimit","FORCE_SCROLL_MODE_PAGE","FORCE_LAZY_PAGE_INIT","PAUSE_EAGER_PAGE_INIT","PDFPageViewBuffer","buf","destroyFirstView","resize","newSize","idsToKeep","Symbol","iterator","firstView","next","buffer","AnnotationMode","ENABLE_FORMS","previousAnnotationMode","previousContainerHeight","scrollModePageState","onVisibilityChange","viewerVersion","_scriptingManager","removePageBorders","NullL10n","defaultRenderingQueue","_doc","_scrollUpdate","_onBeforeDraw","_onAfterDraw","_pages","_pagesCapability","every","_setCurrentPageNumber","resetCurrentPageView","_resetCurrentPageView","indexOf","_currentScale","_setScale","_currentScaleValue","_onePageRenderedCapability","initializePermissions","permissions","PermissionFlag","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","onePageRenderedOrForceFetch","_getVisiblePages","visibilityChangePromise","permissionsPromise","getPermissions","cssTransform","viewerElement","PixelsPerInch","PDF_TO_CSS_UNITS","textLayerFactory","annotationLayerFactory","xfaLayerFactory","PDFPageView","textHighlighterFactory","structTreeLayerFactory","firstPageView","ref","ensurePageViewVisible","getPagesLeft","Language","lang","_location","_previousScrollMode","previousPageNumber","scrollDown","pages","dummyPage","pageIndexSet","parity","cloneNode","_scrollIntoView","pageDiv","pageSpot","isSameScale","newScale","_setScaleUpdatePages","newValue","noScroll","preset","_pageWidthScaleFactor","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","widthScale","heightScale","boundingRect","convertToViewportPoint","_updateLocation","firstPage","normalizedScaleValue","currentPageView","topLeft","getPagePoint","intLeft","intTop","visiblePages","numVisiblePages","newCacheSize","isSimpleLayout","currentId","stillFullyVisible","_isContainerRtl","direction","_getCurrentVisiblePage","toggleLoadingIconSpinner","createTextLayerBuilder","textLayerDiv","enhanceTextSelection","highlighter","TextLayerBuilder","createTextHighlighter","TextHighlighter","createAnnotationLayerBuilder","hasJSActionsPromise","fieldObjectsPromise","annotationCanvasMap","AnnotationLayerBuilder","hasJSActions","createXfaLayerBuilder","XfaLayerBuilder","createStructTreeLayerBuilder","StructTreeLayerBuilder","_getPageAdvance","yArray","expectedId","advance","toFixed","ceil","_hasJSActionsPromise","_fieldObjectsPromise","_annotationCanvasMap","_cancelled","intent","annotations","fieldObjects","getAnnotations","dontFlip","AnnotationLayer","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","getL10nFallback","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","fixupLangCode","langCode","formatL10nValue","MAX_CANVAS_PIXELS","hasRestrictedScaling","textHighlighter","paintTask","paintedViewportMap","WeakMap","_renderError","_isStandalone","annotationLayer","textLayer","zoomLayer","xfaLayer","structTreeLayer","_renderAnnotationLayer","_renderXfaLayer","_buildXfaTextContentItems","textDivs","setTextMapping","enable","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","svg","loadingIconDiv","arguments","viewportScale","redrawAnnotationLayer","redrawXfaLayer","isScalingRestricted","disable","_onTextLayerRendered","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","transX","transY","transformOrigin","convertToPdfPoint","viewVisible","canvasWrapper","finishPaintTask","paintOnSvg","paintOnCanvas","onRenderContinue","readableStream","streamTextContent","includeMarkedContent","setTextContentStream","getStructTree","tree","treeDom","renderCapability","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sqrt","sfx","sfy","wrapper","cancelled","ensureNotCancelled","getOperatorList","opList","svgGfx","SVGGraphics","commonObjs","objs","getSVG","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","structTree","_walk","_setAttributes","structElement","htmlElement","alt","role","children","kid","_onUpdateTextLayerMatches","textContentItemsStr","divs","texts","_updateMatches","_convertMatches","iIndex","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","beginText","appendTextToDiv","fromOffset","toOffset","nodeType","Node","TEXT_NODE","span","createTextNode","i0","i1","isSelected","highlightSuffix","n0","n1","clearedUntilDivIdx","n","EXPAND_DIVS_TIMEOUT","textContentStream","renderingDone","textLayerRenderTask","_bindMouse","endOfContent","numTextDivs","textLayerFrag","renderTextLayer","setTextContent","expandDivsTimer","expandTextDivs","adjustTop","getPropertyValue","divBounds","xfaHtml","XfaLayer","getXfa","toolbarButtonContainer","downloadButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","eventDetails","cursorHandToolButton","scrollPageButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","lastPage","pageRotateCw","pageRotateCcw","containerHeight","_bindClickListeners","_bindCursorToolsListener","_bindScrollModeListener","_bindSpreadModeListener","_setMaxHeight","details","property","scrollModeChanged","forceScrollModePage","isScrollModeHorizontal","spreadModeChanged","maxHeight","PAGE_NUMBER_LOADING_INDICATOR","scaleSelect","customScaleOption","_wasLocalized","_bindListeners","hasPageLabels","pageScaleValue","pageScale","self","_adjustScaleWidth","resetNumPages","predefinedValueFound","option","pageNumberInput","predefinedValuesPromise","scaleSelectContainerWidth","scaleSelectOverflow","font","fontSize","fontFamily","predefinedValue","measureText","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","_initializedPromise","_readFromStorage","databaseStr","database","branch","_writeToStorage","localStorage","setItem","getItem","properties","defaultValue","GenericCom","GenericPreferences","BasePreferences","prefObj","GenericExternalServices","DownloadManager","GenericL10n","GenericScripting","prefs","defaults","prefValue","defaultType","obj","blobUrl","_openBlobUrls","createValidAbsoluteUrl","downloadData","contentType","isPdfData","isPdfFile","viewerUrl","encodeURIComponent","revokeObjectURL","webL10n","_lang","setLanguage","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","getL10nResourceLinks","getL10nDictionary","script","innerHTML","getTranslatableChildren","getL10nAttributes","l10nId","getAttribute","l10nArgs","xhrLoadText","onSuccess","onFailure","_onSuccess","_onFailure","xhr","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","responseText","onerror","ontimeout","send","parseResource","successCallback","failureCallback","evalString","lastIndexOf","parseProperties","parsedPropertiesCallback","dictionary","reBlank","reComment","reSection","reImport","reSplit","parseRawLines","rawText","extendedSyntax","parsedRawLinesCallback","entries","currentLang","genericLang","skipLang","nextEntry","loadImport","tmp","response","prop","loadLocale","_callback","langLinks","langCount","dict","locales","default_locale","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","L10nResourceLink","resource","getPluralRules","locales2rules","isIn","list","isBetween","pluralRules","plural","_pluralRules","getL10nData","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","matched_text","arg","translateElement","getChildElementCount","l","nodeValue","textNode","childElementCount","translateFragment","elementCount","fallbackString","getText","rtlList","shortCode","getReadyState","pdfjsSandbox","QuickJSSandbox","sandbox","nukeSandbox","activeService","renderPage","activeServiceOnEntry","scratchCanvas","PRINT_UNITS","PDF","ENABLE_STORAGE","PDFPrintService","_printResolution","prototype","throwIfInactive","pageStyleSheet","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","useRenderedPage","toBlob","onload","performPrint","call","abort","eventType","createEvent","initCustomEvent","progressContainer","progressBar","progressPerc","chrome","opera","stopImmediatePropagation","stopPropagationIfNeeded","overlayPromise","allXfaHtml","xfaPage","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","PDFViewerApplicationOptions","require","getViewerConfiguration","webViewerLoad"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof navigator === \"undefined\"\n ) {\n globalThis.navigator = Object.create(null);\n }\n const userAgent = navigator.userAgent || \"\";\n const platform = navigator.platform || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * NOTE: These options are used to generate the `default_preferences.json` file,\n * see `OptionKind.PREFERENCE`, hence the values below must use only\n * primitive types and cannot rely on any imported types.\n */\nconst defaultOptions = {\n annotationMode: {\n /** @type {number} */\n value: 2,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultUrl: {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n compatibility: compatibilityParams.maxCanvasPixels,\n kind: OptionKind.VIEWER,\n },\n pageColorsBackground: {\n /** @type {string} */\n value: \"Canvas\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n pageColorsForeground: {\n /** @type {string} */\n value: \"CanvasText\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n renderer: {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\") ? 2 : 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: navigator.language || \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n\n defaultOptions.renderer.kind += OptionKind.PREFERENCE;\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return defaultOption.compatibility ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : defaultOption.compatibility ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n\n /**\n * @ignore\n */\n static _hasUserOptions() {\n return Object.keys(userOptions).length > 0;\n }\n}\n\nexport { AppOptions, compatibilityParams, OptionKind };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport {\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _docStats: null,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n _PDFBug: null,\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an <iframe> or an <object>.\n AppOptions.set(\"externalLinkTarget\", LinkTarget.TOP);\n }\n await this._initializeViewerComponents();\n\n // Bind the various event handlers *after* the viewer has been\n // initialized, to prevent errors if an event arrives too soon.\n this.bindEvents();\n this.bindWindowEvents();\n\n // We can start UI localization now.\n const appContainer = appConfig.appContainer || document.documentElement;\n this.l10n.translate(appContainer).then(() => {\n // Dispatch the 'localized' event on the `eventBus` once the viewer\n // has been fully initialized and translated.\n this.eventBus.dispatch(\"localized\", { source: this });\n });\n\n this._initializedCapability.resolve();\n },\n\n /**\n * @private\n */\n async _readPreferences() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (AppOptions.get(\"disablePreferences\")) {\n // Give custom implementations of the default viewer a simpler way to\n // opt-out of having the `Preferences` override existing `AppOptions`.\n return;\n }\n if (AppOptions._hasUserOptions()) {\n console.warn(\n \"_readPreferences: The Preferences may override manually set AppOptions; \" +\n 'please use the \"disablePreferences\"-option in order to prevent that.'\n );\n }\n }\n try {\n AppOptions.setAll(await this.preferences.getAll());\n } catch (reason) {\n console.error(`_readPreferences: \"${reason?.message}\".`);\n }\n },\n\n /**\n * Potentially parse special debugging flags in the hash section of the URL.\n * @private\n */\n async _parseHashParameters() {\n if (!AppOptions.get(\"pdfBugEnabled\")) {\n return;\n }\n const hash = document.location.hash.substring(1);\n if (!hash) {\n return;\n }\n const { mainContainer, viewerContainer } = this.appConfig,\n params = parseQueryString(hash);\n\n if (params.get(\"disableworker\") === \"true\") {\n try {\n await loadFakeWorker();\n } catch (ex) {\n console.error(`_parseHashParameters: \"${ex.message}\".`);\n }\n }\n if (params.has(\"disablerange\")) {\n AppOptions.set(\"disableRange\", params.get(\"disablerange\") === \"true\");\n }\n if (params.has(\"disablestream\")) {\n AppOptions.set(\"disableStream\", params.get(\"disablestream\") === \"true\");\n }\n if (params.has(\"disableautofetch\")) {\n AppOptions.set(\n \"disableAutoFetch\",\n params.get(\"disableautofetch\") === \"true\"\n );\n }\n if (params.has(\"disablefontface\")) {\n AppOptions.set(\n \"disableFontFace\",\n params.get(\"disablefontface\") === \"true\"\n );\n }\n if (params.has(\"disablehistory\")) {\n AppOptions.set(\"disableHistory\", params.get(\"disablehistory\") === \"true\");\n }\n if (params.has(\"verbosity\")) {\n AppOptions.set(\"verbosity\", params.get(\"verbosity\") | 0);\n }\n if (params.has(\"textlayer\")) {\n switch (params.get(\"textlayer\")) {\n case \"off\":\n AppOptions.set(\"textLayerMode\", TextLayerMode.DISABLE);\n break;\n case \"visible\":\n case \"shadow\":\n case \"hover\":\n viewerContainer.classList.add(`textLayer-${params.get(\"textlayer\")}`);\n try {\n await loadPDFBug(this);\n this._PDFBug.loadCSS();\n } catch (ex) {\n console.error(`_parseHashParameters: \"${ex.message}\".`);\n }\n break;\n }\n }\n if (params.has(\"pdfbug\")) {\n AppOptions.set(\"pdfBug\", true);\n AppOptions.set(\"fontExtraProperties\", true);\n\n const enabled = params.get(\"pdfbug\").split(\",\");\n try {\n await loadPDFBug(this);\n this._PDFBug.init({ OPS }, mainContainer, enabled);\n } catch (ex) {\n console.error(`_parseHashParameters: \"${ex.message}\".`);\n }\n }\n // It is not possible to change locale for the (various) extension builds.\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")) &&\n params.has(\"locale\")\n ) {\n AppOptions.set(\"locale\", params.get(\"locale\"));\n }\n },\n\n /**\n * @private\n */\n async _initializeL10n() {\n this.l10n = this.externalServices.createL10n(\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ? { locale: AppOptions.get(\"locale\") }\n : null\n );\n const dir = await this.l10n.getDirection();\n document.getElementsByTagName(\"html\")[0].dir = dir;\n },\n\n /**\n * @private\n */\n _forceCssTheme() {\n const cssTheme = AppOptions.get(\"viewerCssTheme\");\n if (\n cssTheme === ViewerCssTheme.AUTOMATIC ||\n !Object.values(ViewerCssTheme).includes(cssTheme)\n ) {\n return;\n }\n try {\n const styleSheet = document.styleSheets[0];\n const cssRules = styleSheet?.cssRules || [];\n for (let i = 0, ii = cssRules.length; i < ii; i++) {\n const rule = cssRules[i];\n if (\n rule instanceof CSSMediaRule &&\n rule.media?.[0] === \"(prefers-color-scheme: dark)\"\n ) {\n if (cssTheme === ViewerCssTheme.LIGHT) {\n styleSheet.deleteRule(i);\n return;\n }\n // cssTheme === ViewerCssTheme.DARK\n const darkRules =\n /^@media \\(prefers-color-scheme: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$/.exec(\n rule.cssText\n );\n if (darkRules?.[1]) {\n styleSheet.deleteRule(i);\n styleSheet.insertRule(darkRules[1], i);\n }\n return;\n }\n }\n } catch (reason) {\n console.error(`_forceCssTheme: \"${reason?.message}\".`);\n }\n },\n\n /**\n * @private\n */\n async _initializeViewerComponents() {\n const { appConfig, externalServices } = this;\n\n const eventBus = externalServices.isInAutomation\n ? new AutomationEventBus()\n : new EventBus();\n this.eventBus = eventBus;\n\n this.overlayManager = new OverlayManager();\n\n const pdfRenderingQueue = new PDFRenderingQueue();\n pdfRenderingQueue.onIdle = this._cleanup.bind(this);\n this.pdfRenderingQueue = pdfRenderingQueue;\n\n const pdfLinkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: AppOptions.get(\"externalLinkTarget\"),\n externalLinkRel: AppOptions.get(\"externalLinkRel\"),\n ignoreDestinationZoom: AppOptions.get(\"ignoreDestinationZoom\"),\n });\n this.pdfLinkService = pdfLinkService;\n\n const downloadManager = externalServices.createDownloadManager();\n this.downloadManager = downloadManager;\n\n const findController = new PDFFindController({\n linkService: pdfLinkService,\n eventBus,\n });\n this.findController = findController;\n\n const pdfScriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc:\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC || CHROME\")\n ? AppOptions.get(\"sandboxBundleSrc\")\n : null,\n scriptingFactory: externalServices,\n docPropertiesLookup: this._scriptingDocProperties.bind(this),\n });\n this.pdfScriptingManager = pdfScriptingManager;\n\n const container = appConfig.mainContainer;\n const viewer = appConfig.viewerContainer;\n this.pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n downloadManager,\n findController,\n scriptingManager:\n AppOptions.get(\"enableScripting\") && pdfScriptingManager,\n renderer: AppOptions.get(\"renderer\"),\n l10n: this.l10n,\n textLayerMode: AppOptions.get(\"textLayerMode\"),\n annotationMode: AppOptions.get(\"annotationMode\"),\n imageResourcesPath: AppOptions.get(\"imageResourcesPath\"),\n enablePrintAutoRotate: AppOptions.get(\"enablePrintAutoRotate\"),\n useOnlyCssZoom: AppOptions.get(\"useOnlyCssZoom\"),\n maxCanvasPixels: AppOptions.get(\"maxCanvasPixels\"),\n enablePermissions: AppOptions.get(\"enablePermissions\"),\n pageColors: {\n background: AppOptions.get(\"pageColorsBackground\"),\n foreground: AppOptions.get(\"pageColorsForeground\"),\n },\n });\n pdfRenderingQueue.setViewer(this.pdfViewer);\n pdfLinkService.setViewer(this.pdfViewer);\n pdfScriptingManager.setViewer(this.pdfViewer);\n\n this.pdfThumbnailViewer = new PDFThumbnailViewer({\n container: appConfig.sidebar.thumbnailView,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n l10n: this.l10n,\n });\n pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n\n // The browsing history is only enabled when the viewer is standalone,\n // i.e. not when it is embedded in a web page.\n if (!this.isViewerEmbedded && !AppOptions.get(\"disableHistory\")) {\n this.pdfHistory = new PDFHistory({\n linkService: pdfLinkService,\n eventBus,\n });\n pdfLinkService.setHistory(this.pdfHistory);\n }\n\n if (!this.supportsIntegratedFind) {\n this.findBar = new PDFFindBar(appConfig.findBar, eventBus, this.l10n);\n }\n\n this.pdfDocumentProperties = new PDFDocumentProperties(\n appConfig.documentProperties,\n this.overlayManager,\n eventBus,\n this.l10n\n );\n\n this.pdfCursorTools = new PDFCursorTools({\n container,\n eventBus,\n cursorToolOnLoad: AppOptions.get(\"cursorToolOnLoad\"),\n });\n\n this.toolbar = new Toolbar(appConfig.toolbar, eventBus, this.l10n);\n\n this.secondaryToolbar = new SecondaryToolbar(\n appConfig.secondaryToolbar,\n eventBus\n );\n\n if (this.supportsFullscreen) {\n this.pdfPresentationMode = new PDFPresentationMode({\n container,\n pdfViewer: this.pdfViewer,\n eventBus,\n });\n }\n\n this.passwordPrompt = new PasswordPrompt(\n appConfig.passwordOverlay,\n this.overlayManager,\n this.l10n,\n this.isViewerEmbedded\n );\n\n this.pdfOutlineViewer = new PDFOutlineViewer({\n container: appConfig.sidebar.outlineView,\n eventBus,\n linkService: pdfLinkService,\n });\n\n this.pdfAttachmentViewer = new PDFAttachmentViewer({\n container: appConfig.sidebar.attachmentsView,\n eventBus,\n downloadManager,\n });\n\n this.pdfLayerViewer = new PDFLayerViewer({\n container: appConfig.sidebar.layersView,\n eventBus,\n l10n: this.l10n,\n });\n\n this.pdfSidebar = new PDFSidebar({\n elements: appConfig.sidebar,\n pdfViewer: this.pdfViewer,\n pdfThumbnailViewer: this.pdfThumbnailViewer,\n eventBus,\n l10n: this.l10n,\n });\n this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n\n this.pdfSidebarResizer = new PDFSidebarResizer(\n appConfig.sidebarResizer,\n eventBus,\n this.l10n\n );\n },\n\n run(config) {\n this.initialize(config).then(webViewerInitialized);\n },\n\n get initialized() {\n return this._initializedCapability.settled;\n },\n\n get initializedPromise() {\n return this._initializedCapability.promise;\n },\n\n zoomIn(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.increaseScale(steps);\n },\n\n zoomOut(steps) {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.decreaseScale(steps);\n },\n\n zoomReset() {\n if (this.pdfViewer.isInPresentationMode) {\n return;\n }\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n },\n\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n },\n\n get page() {\n return this.pdfViewer.currentPageNumber;\n },\n\n set page(val) {\n this.pdfViewer.currentPageNumber = val;\n },\n\n get supportsPrinting() {\n return PDFPrintServiceFactory.instance.supportsPrinting;\n },\n\n get supportsFullscreen() {\n return shadow(this, \"supportsFullscreen\", document.fullscreenEnabled);\n },\n\n get supportsIntegratedFind() {\n return this.externalServices.supportsIntegratedFind;\n },\n\n get supportsDocumentFonts() {\n return this.externalServices.supportsDocumentFonts;\n },\n\n get loadingBar() {\n const bar = new ProgressBar(\"#loadingBar\");\n return shadow(this, \"loadingBar\", bar);\n },\n\n get supportedMouseWheelZoomModifierKeys() {\n return this.externalServices.supportedMouseWheelZoomModifierKeys;\n },\n\n initPassiveLoading() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n !PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n throw new Error(\"Not implemented: initPassiveLoading\");\n }\n this.externalServices.initPassiveLoading({\n onOpenWithTransport: (url, length, transport) => {\n this.open(url, { length, range: transport });\n },\n onOpenWithData: (data, contentDispositionFilename) => {\n if (isPdfFile(contentDispositionFilename)) {\n this._contentDispositionFilename = contentDispositionFilename;\n }\n this.open(data);\n },\n onOpenWithURL: (url, length, originalUrl) => {\n const file = originalUrl !== undefined ? { url, originalUrl } : url;\n const args = length !== undefined ? { length } : null;\n\n this.open(file, args);\n },\n onError: err => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, err);\n });\n },\n onProgress: (loaded, total) => {\n this.progress(loaded / total);\n },\n });\n },\n\n setTitleUsingUrl(url = \"\", downloadUrl = null) {\n this.url = url;\n this.baseUrl = url.split(\"#\")[0];\n if (downloadUrl) {\n this._downloadUrl =\n downloadUrl === url ? this.baseUrl : downloadUrl.split(\"#\")[0];\n }\n let title = getPdfFilenameFromUrl(url, \"\");\n if (!title) {\n try {\n title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n } catch (ex) {\n // decodeURIComponent may throw URIError,\n // fall back to using the unprocessed url in that case\n title = url;\n }\n }\n this.setTitle(title);\n },\n\n setTitle(title) {\n if (this.isViewerEmbedded) {\n // Embedded PDF viewers should not be changing their parent page's title.\n return;\n }\n document.title = title;\n },\n\n get _docFilename() {\n // Use `this.url` instead of `this.baseUrl` to perform filename detection\n // based on the reference fragment as ultimate fallback if needed.\n return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\n },\n\n /**\n * @private\n */\n _hideViewBookmark() {\n // URL does not reflect proper document location - hiding some buttons.\n const { toolbar, secondaryToolbar } = this.appConfig;\n toolbar.viewBookmark.hidden = true;\n secondaryToolbar.viewBookmarkButton.hidden = true;\n },\n\n /**\n * @private\n */\n _cancelIdleCallbacks() {\n if (!this._idleCallbacks.size) {\n return;\n }\n for (const callback of this._idleCallbacks) {\n window.cancelIdleCallback(callback);\n }\n this._idleCallbacks.clear();\n },\n\n /**\n * Closes opened PDF document.\n * @returns {Promise} - Returns the promise, which is resolved when all\n * destruction is completed.\n */\n async close() {\n this._unblockDocumentLoadEvent();\n this._hideViewBookmark();\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const { container } = this.appConfig.errorWrapper;\n container.hidden = true;\n }\n\n if (!this.pdfLoadingTask) {\n return;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this.pdfDocument?.annotationStorage.size > 0 &&\n this._annotationStorageModified\n ) {\n try {\n // Trigger saving, to prevent data loss in forms; see issue 12257.\n await this.save({ sourceEventType: \"save\" });\n } catch (reason) {\n // Ignoring errors, to ensure that document closing won't break.\n }\n }\n const promises = [];\n\n promises.push(this.pdfLoadingTask.destroy());\n this.pdfLoadingTask = null;\n\n if (this.pdfDocument) {\n this.pdfDocument = null;\n\n this.pdfThumbnailViewer.setDocument(null);\n this.pdfViewer.setDocument(null);\n this.pdfLinkService.setDocument(null);\n this.pdfDocumentProperties.setDocument(null);\n }\n this.pdfLinkService.externalLinkEnabled = true;\n this.store = null;\n this.isInitialViewSet = false;\n this.downloadComplete = false;\n this.url = \"\";\n this.baseUrl = \"\";\n this._downloadUrl = \"\";\n this.documentInfo = null;\n this.metadata = null;\n this._contentDispositionFilename = null;\n this._contentLength = null;\n this._saveInProgress = false;\n this._docStats = null;\n\n this._cancelIdleCallbacks();\n promises.push(this.pdfScriptingManager.destroyPromise);\n\n this.pdfSidebar.reset();\n this.pdfOutlineViewer.reset();\n this.pdfAttachmentViewer.reset();\n this.pdfLayerViewer.reset();\n\n this.pdfHistory?.reset();\n this.findBar?.reset();\n this.toolbar.reset();\n this.secondaryToolbar.reset();\n this._PDFBug?.cleanup();\n\n await Promise.all(promises);\n },\n\n /**\n * Opens PDF document specified by URL or array with additional arguments.\n * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.\n * @param {Object} [args] - Additional arguments for the getDocument call,\n * e.g. HTTP headers ('httpHeaders') or alternative\n * data transport ('range').\n * @returns {Promise} - Returns the promise, which is resolved when document\n * is opened.\n */\n async open(file, args) {\n if (this.pdfLoadingTask) {\n // We need to destroy already opened document.\n await this.close();\n }\n // Set the necessary global worker parameters, using the available options.\n const workerParameters = AppOptions.getAll(OptionKind.WORKER);\n for (const key in workerParameters) {\n GlobalWorkerOptions[key] = workerParameters[key];\n }\n\n const parameters = Object.create(null);\n if (typeof file === \"string\") {\n // URL\n this.setTitleUsingUrl(file, /* downloadUrl = */ file);\n parameters.url = file;\n } else if (file && \"byteLength\" in file) {\n // ArrayBuffer\n parameters.data = file;\n } else if (file.url && file.originalUrl) {\n this.setTitleUsingUrl(file.originalUrl, /* downloadUrl = */ file.url);\n parameters.url = file.url;\n }\n // Set the necessary API parameters, using the available options.\n const apiParameters = AppOptions.getAll(OptionKind.API);\n for (const key in apiParameters) {\n let value = apiParameters[key];\n\n if (key === \"docBaseUrl\" && !value) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n value = document.URL.split(\"#\")[0];\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n value = this.baseUrl;\n }\n }\n parameters[key] = value;\n }\n // Finally, update the API parameters with the arguments (if they exist).\n if (args) {\n for (const key in args) {\n parameters[key] = args[key];\n }\n }\n\n const loadingTask = getDocument(parameters);\n this.pdfLoadingTask = loadingTask;\n\n loadingTask.onPassword = (updateCallback, reason) => {\n this.pdfLinkService.externalLinkEnabled = false;\n this.passwordPrompt.setUpdateCallback(updateCallback, reason);\n this.passwordPrompt.open();\n };\n\n loadingTask.onProgress = ({ loaded, total }) => {\n this.progress(loaded / total);\n };\n\n // Listen for unsupported features to report telemetry.\n loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n\n return loadingTask.promise.then(\n pdfDocument => {\n this.load(pdfDocument);\n },\n reason => {\n if (loadingTask !== this.pdfLoadingTask) {\n return undefined; // Ignore errors for previously opened PDF files.\n }\n\n let key = \"loading_error\";\n if (reason instanceof InvalidPDFException) {\n key = \"invalid_file_error\";\n } else if (reason instanceof MissingPDFException) {\n key = \"missing_file_error\";\n } else if (reason instanceof UnexpectedResponseException) {\n key = \"unexpected_response_error\";\n }\n return this.l10n.get(key).then(msg => {\n this._documentError(msg, { message: reason?.message });\n throw reason;\n });\n }\n );\n },\n\n /**\n * @private\n */\n _ensureDownloadComplete() {\n if (this.pdfDocument && this.downloadComplete) {\n return;\n }\n throw new Error(\"PDF document not downloaded.\");\n },\n\n async download({ sourceEventType = \"download\" } = {}) {\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.getData();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply download using the URL.\n await this.downloadManager.downloadUrl(url, filename);\n }\n },\n\n async save({ sourceEventType = \"download\" } = {}) {\n if (this._saveInProgress) {\n return;\n }\n this._saveInProgress = true;\n await this.pdfScriptingManager.dispatchWillSave();\n\n const url = this._downloadUrl,\n filename = this._docFilename;\n try {\n this._ensureDownloadComplete();\n\n const data = await this.pdfDocument.saveDocument();\n const blob = new Blob([data], { type: \"application/pdf\" });\n\n await this.downloadManager.download(blob, url, filename, sourceEventType);\n } catch (reason) {\n // When the PDF document isn't ready, or the PDF file is still\n // downloading, simply fallback to a \"regular\" download.\n console.error(`Error when saving the document: ${reason.message}`);\n await this.download({ sourceEventType });\n } finally {\n await this.pdfScriptingManager.dispatchDidSave();\n this._saveInProgress = false;\n }\n },\n\n downloadOrSave(options) {\n if (this.pdfDocument?.annotationStorage.size > 0) {\n this.save(options);\n } else {\n this.download(options);\n }\n },\n\n fallback(featureId) {\n this.externalServices.reportTelemetry({\n type: \"unsupportedFeature\",\n featureId,\n });\n },\n\n /**\n * Show the error box; used for errors affecting loading and/or parsing of\n * the entire PDF document.\n */\n _documentError(message, moreInfo = null) {\n this._unblockDocumentLoadEvent();\n\n this._otherError(message, moreInfo);\n\n this.eventBus.dispatch(\"documenterror\", {\n source: this,\n message,\n reason: moreInfo?.message ?? null,\n });\n },\n\n /**\n * Show the error box; used for errors affecting e.g. only a single page.\n *\n * @param {string} message - A message that is human readable.\n * @param {Object} [moreInfo] - Further information about the error that is\n * more technical. Should have a 'message' and\n * optionally a 'stack' property.\n */\n _otherError(message, moreInfo = null) {\n const moreInfoText = [\n this.l10n.get(\"error_version_info\", {\n version: version || \"?\",\n build: build || \"?\",\n }),\n ];\n if (moreInfo) {\n moreInfoText.push(\n this.l10n.get(\"error_message\", { message: moreInfo.message })\n );\n if (moreInfo.stack) {\n moreInfoText.push(\n this.l10n.get(\"error_stack\", { stack: moreInfo.stack })\n );\n } else {\n if (moreInfo.filename) {\n moreInfoText.push(\n this.l10n.get(\"error_file\", { file: moreInfo.filename })\n );\n }\n if (moreInfo.lineNumber) {\n moreInfoText.push(\n this.l10n.get(\"error_line\", { line: moreInfo.lineNumber })\n );\n }\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n const errorWrapperConfig = this.appConfig.errorWrapper;\n const errorWrapper = errorWrapperConfig.container;\n errorWrapper.hidden = false;\n\n const errorMessage = errorWrapperConfig.errorMessage;\n errorMessage.textContent = message;\n\n const closeButton = errorWrapperConfig.closeButton;\n closeButton.onclick = function () {\n errorWrapper.hidden = true;\n };\n\n const errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n const moreInfoButton = errorWrapperConfig.moreInfoButton;\n const lessInfoButton = errorWrapperConfig.lessInfoButton;\n moreInfoButton.onclick = function () {\n errorMoreInfo.hidden = false;\n moreInfoButton.hidden = true;\n lessInfoButton.hidden = false;\n errorMoreInfo.style.height = errorMoreInfo.scrollHeight + \"px\";\n };\n lessInfoButton.onclick = function () {\n errorMoreInfo.hidden = true;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n };\n moreInfoButton.oncontextmenu = noContextMenuHandler;\n lessInfoButton.oncontextmenu = noContextMenuHandler;\n closeButton.oncontextmenu = noContextMenuHandler;\n moreInfoButton.hidden = false;\n lessInfoButton.hidden = true;\n Promise.all(moreInfoText).then(parts => {\n errorMoreInfo.value = parts.join(\"\\n\");\n });\n } else {\n Promise.all(moreInfoText).then(parts => {\n console.error(message + \"\\n\" + parts.join(\"\\n\"));\n });\n this.fallback();\n }\n },\n\n progress(level) {\n if (this.downloadComplete) {\n // Don't accidentally show the loading bar again when the entire file has\n // already been fetched (only an issue when disableAutoFetch is enabled).\n return;\n }\n const percent = Math.round(level * 100);\n // When we transition from full request to range requests, it's possible\n // that we discard some of the loaded data. This can cause the loading\n // bar to move backwards. So prevent this by only updating the bar if it\n // increases.\n if (percent > this.loadingBar.percent || isNaN(percent)) {\n this.loadingBar.percent = percent;\n\n // When disableAutoFetch is enabled, it's not uncommon for the entire file\n // to never be fetched (depends on e.g. the file structure). In this case\n // the loading bar will not be completely filled, nor will it be hidden.\n // To prevent displaying a partially filled loading bar permanently, we\n // hide it when no data has been loaded during a certain amount of time.\n const disableAutoFetch = this.pdfDocument\n ? this.pdfDocument.loadingParams.disableAutoFetch\n : AppOptions.get(\"disableAutoFetch\");\n\n if (disableAutoFetch && percent) {\n if (this.disableAutoFetchLoadingBarTimeout) {\n clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n this.disableAutoFetchLoadingBarTimeout = null;\n }\n this.loadingBar.show();\n\n this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {\n this.loadingBar.hide();\n this.disableAutoFetchLoadingBarTimeout = null;\n }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n }\n }\n },\n\n load(pdfDocument) {\n this.pdfDocument = pdfDocument;\n\n pdfDocument.getDownloadInfo().then(({ length }) => {\n this._contentLength = length; // Ensure that the correct length is used.\n this.downloadComplete = true;\n this.loadingBar.hide();\n\n firstPagePromise.then(() => {\n this.eventBus.dispatch(\"documentloaded\", { source: this });\n });\n });\n\n // Since the `setInitialView` call below depends on this being resolved,\n // fetch it early to avoid delaying initial rendering of the PDF document.\n const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const pageModePromise = pdfDocument.getPageMode().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n const openActionPromise = pdfDocument.getOpenAction().catch(function () {\n /* Avoid breaking initial rendering; ignoring errors. */\n });\n\n this.toolbar.setPagesCount(pdfDocument.numPages, false);\n this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n\n let baseDocumentUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n baseDocumentUrl = null;\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n baseDocumentUrl = this.baseUrl;\n } else if (PDFJSDev.test(\"CHROME\")) {\n baseDocumentUrl = location.href.split(\"#\")[0];\n }\n this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n\n const pdfViewer = this.pdfViewer;\n pdfViewer.setDocument(pdfDocument);\n const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\n\n const pdfThumbnailViewer = this.pdfThumbnailViewer;\n pdfThumbnailViewer.setDocument(pdfDocument);\n\n const storedPromise = (this.store = new ViewHistory(\n pdfDocument.fingerprints[0]\n ))\n .getMultiple({\n page: null,\n zoom: DEFAULT_SCALE_VALUE,\n scrollLeft: \"0\",\n scrollTop: \"0\",\n rotation: null,\n sidebarView: SidebarView.UNKNOWN,\n scrollMode: ScrollMode.UNKNOWN,\n spreadMode: SpreadMode.UNKNOWN,\n })\n .catch(() => {\n /* Unable to read from storage; ignoring errors. */\n return Object.create(null);\n });\n\n firstPagePromise.then(pdfPage => {\n this.loadingBar.setWidth(this.appConfig.viewerContainer);\n this._initializeAnnotationStorageCallbacks(pdfDocument);\n\n Promise.all([\n animationStarted,\n storedPromise,\n pageLayoutPromise,\n pageModePromise,\n openActionPromise,\n ])\n .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\n const viewOnLoad = AppOptions.get(\"viewOnLoad\");\n\n this._initializePdfHistory({\n fingerprint: pdfDocument.fingerprints[0],\n viewOnLoad,\n initialDest: openAction?.dest,\n });\n const initialBookmark = this.initialBookmark;\n\n // Initialize the default values, from user preferences.\n const zoom = AppOptions.get(\"defaultZoomValue\");\n let hash = zoom ? `zoom=${zoom}` : null;\n\n let rotation = null;\n let sidebarView = AppOptions.get(\"sidebarViewOnLoad\");\n let scrollMode = AppOptions.get(\"scrollModeOnLoad\");\n let spreadMode = AppOptions.get(\"spreadModeOnLoad\");\n\n if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) {\n hash =\n `page=${stored.page}&zoom=${zoom || stored.zoom},` +\n `${stored.scrollLeft},${stored.scrollTop}`;\n\n rotation = parseInt(stored.rotation, 10);\n // Always let user preference take precedence over the view history.\n if (sidebarView === SidebarView.UNKNOWN) {\n sidebarView = stored.sidebarView | 0;\n }\n if (scrollMode === ScrollMode.UNKNOWN) {\n scrollMode = stored.scrollMode | 0;\n }\n if (spreadMode === SpreadMode.UNKNOWN) {\n spreadMode = stored.spreadMode | 0;\n }\n }\n // Always let the user preference/view history take precedence.\n if (pageMode && sidebarView === SidebarView.UNKNOWN) {\n sidebarView = apiPageModeToSidebarView(pageMode);\n }\n if (\n pageLayout &&\n scrollMode === ScrollMode.UNKNOWN &&\n spreadMode === SpreadMode.UNKNOWN\n ) {\n const modes = apiPageLayoutToViewerModes(pageLayout);\n // TODO: Try to improve page-switching when using the mouse-wheel\n // and/or arrow-keys before allowing the document to control this.\n // scrollMode = modes.scrollMode;\n spreadMode = modes.spreadMode;\n }\n\n this.setInitialView(hash, {\n rotation,\n sidebarView,\n scrollMode,\n spreadMode,\n });\n this.eventBus.dispatch(\"documentinit\", { source: this });\n // Make all navigation keys work on document load,\n // unless the viewer is embedded in a web page.\n if (!this.isViewerEmbedded) {\n pdfViewer.focus();\n }\n\n // For documents with different page sizes, once all pages are\n // resolved, ensure that the correct location becomes visible on load.\n // (To reduce the risk, in very large and/or slow loading documents,\n // that the location changes *after* the user has started interacting\n // with the viewer, wait for either `pagesPromise` or a timeout.)\n await Promise.race([\n pagesPromise,\n new Promise(resolve => {\n setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\n }),\n ]);\n if (!initialBookmark && !hash) {\n return;\n }\n if (pdfViewer.hasEqualPageSizes) {\n return;\n }\n this.initialBookmark = initialBookmark;\n\n // eslint-disable-next-line no-self-assign\n pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n // Re-apply the initial document location.\n this.setInitialView(hash);\n })\n .catch(() => {\n // Ensure that the document is always completely initialized,\n // even if there are any errors thrown above.\n this.setInitialView();\n })\n .then(function () {\n // At this point, rendering of the initial page(s) should always have\n // started (and may even have completed).\n // To prevent any future issues, e.g. the document being completely\n // blank on load, always trigger rendering here.\n pdfViewer.update();\n });\n });\n\n pagesPromise.then(\n () => {\n this._unblockDocumentLoadEvent();\n\n this._initializeAutoPrint(pdfDocument, openActionPromise);\n },\n reason => {\n this.l10n.get(\"loading_error\").then(msg => {\n this._documentError(msg, { message: reason?.message });\n });\n }\n );\n\n onePageRendered.then(data => {\n this.externalServices.reportTelemetry({\n type: \"pageInfo\",\n timestamp: data.timestamp,\n });\n\n pdfDocument.getOutline().then(outline => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the outline resolved.\n }\n this.pdfOutlineViewer.render({ outline, pdfDocument });\n });\n pdfDocument.getAttachments().then(attachments => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the attachments resolved.\n }\n this.pdfAttachmentViewer.render({ attachments });\n });\n // Ensure that the layers accurately reflects the current state in the\n // viewer itself, rather than the default state provided by the API.\n pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the layers resolved.\n }\n this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\n });\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n \"requestIdleCallback\" in window\n ) {\n const callback = window.requestIdleCallback(\n () => {\n this._collectTelemetry(pdfDocument);\n this._idleCallbacks.delete(callback);\n },\n { timeout: 1000 }\n );\n this._idleCallbacks.add(callback);\n }\n });\n\n this._initializePageLabels(pdfDocument);\n this._initializeMetadata(pdfDocument);\n },\n\n /**\n * @private\n */\n async _scriptingDocProperties(pdfDocument) {\n if (!this.documentInfo) {\n // It should be *extremely* rare for metadata to not have been resolved\n // when this code runs, but ensure that we handle that case here.\n await new Promise(resolve => {\n this.eventBus._on(\"metadataloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the metadata resolved.\n }\n }\n if (!this._contentLength) {\n // Always waiting for the entire PDF document to be loaded will, most\n // likely, delay sandbox-creation too much in the general case for all\n // PDF documents which are not provided as binary data to the API.\n // Hence we'll simply have to trust that the `contentLength` (as provided\n // by the server), when it exists, is accurate enough here.\n await new Promise(resolve => {\n this.eventBus._on(\"documentloaded\", resolve, { once: true });\n });\n if (pdfDocument !== this.pdfDocument) {\n return null; // The document was closed while the downloadInfo resolved.\n }\n }\n\n return {\n ...this.documentInfo,\n baseURL: this.baseUrl,\n filesize: this._contentLength,\n filename: this._docFilename,\n metadata: this.metadata?.getRaw(),\n authors: this.metadata?.get(\"dc:creator\"),\n numPages: this.pagesCount,\n URL: this.url,\n };\n },\n\n /**\n * A place to fetch data for telemetry after one page is rendered and the\n * viewer is idle.\n * @private\n */\n async _collectTelemetry(pdfDocument) {\n const markInfo = await this.pdfDocument.getMarkInfo();\n if (pdfDocument !== this.pdfDocument) {\n return; // Document was closed while waiting for mark info.\n }\n const tagged = markInfo?.Marked || false;\n this.externalServices.reportTelemetry({\n type: \"tagged\",\n tagged,\n });\n },\n\n /**\n * @private\n */\n async _initializeAutoPrint(pdfDocument, openActionPromise) {\n const [openAction, javaScript] = await Promise.all([\n openActionPromise,\n !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null,\n ]);\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the auto print data resolved.\n }\n let triggerAutoPrint = false;\n\n if (openAction?.action === \"Print\") {\n triggerAutoPrint = true;\n }\n if (javaScript) {\n javaScript.some(js => {\n if (!js) {\n // Don't warn/fallback for empty JavaScript actions.\n return false;\n }\n console.warn(\"Warning: JavaScript support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.javaScript);\n return true;\n });\n\n if (!triggerAutoPrint) {\n // Hack to support auto printing.\n for (const js of javaScript) {\n if (js && AutoPrintRegExp.test(js)) {\n triggerAutoPrint = true;\n break;\n }\n }\n }\n }\n\n if (triggerAutoPrint) {\n this.triggerPrinting();\n }\n },\n\n /**\n * @private\n */\n async _initializeMetadata(pdfDocument) {\n const { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n this.documentInfo = info;\n this.metadata = metadata;\n this._contentDispositionFilename ??= contentDispositionFilename;\n this._contentLength ??= contentLength; // See `getDownloadInfo`-call above.\n\n // Provides some basic debug information\n console.log(\n `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\n `${(info.Producer || \"-\").trim()} / ${(info.Creator || \"-\").trim()}] ` +\n `(PDF.js: ${version || \"-\"})`\n );\n let pdfTitle = info?.Title;\n\n const metadataTitle = metadata?.get(\"dc:title\");\n if (metadataTitle) {\n // Ghostscript can produce invalid 'dc:title' Metadata entries:\n // - The title may be \"Untitled\" (fixes bug 1031612).\n // - The title may contain incorrectly encoded characters, which thus\n // looks broken, hence we ignore the Metadata entry when it\n // contains characters from the Specials Unicode block\n // (fixes bug 1605526).\n if (\n metadataTitle !== \"Untitled\" &&\n !/[\\uFFF0-\\uFFFF]/g.test(metadataTitle)\n ) {\n pdfTitle = metadataTitle;\n }\n }\n if (pdfTitle) {\n this.setTitle(\n `${pdfTitle} - ${contentDispositionFilename || document.title}`\n );\n } else if (contentDispositionFilename) {\n this.setTitle(contentDispositionFilename);\n }\n\n if (\n info.IsXFAPresent &&\n !info.IsAcroFormPresent &&\n !pdfDocument.isPureXfa\n ) {\n if (pdfDocument.loadingParams.enableXfa) {\n console.warn(\"Warning: XFA Foreground documents are not supported\");\n } else {\n console.warn(\"Warning: XFA support is not enabled\");\n }\n this.fallback(UNSUPPORTED_FEATURES.forms);\n } else if (\n (info.IsAcroFormPresent || info.IsXFAPresent) &&\n !this.pdfViewer.renderForms\n ) {\n console.warn(\"Warning: Interactive form support is not enabled\");\n this.fallback(UNSUPPORTED_FEATURES.forms);\n }\n\n if (info.IsSignaturesPresent) {\n console.warn(\"Warning: Digital signatures validation is not supported\");\n this.fallback(UNSUPPORTED_FEATURES.signatures);\n }\n\n // Telemetry labels must be C++ variable friendly.\n let versionId = \"other\";\n if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) {\n versionId = `v${info.PDFFormatVersion.replace(\".\", \"_\")}`;\n }\n let generatorId = \"other\";\n if (info.Producer) {\n const producer = info.Producer.toLowerCase();\n KNOWN_GENERATORS.some(function (generator) {\n if (!producer.includes(generator)) {\n return false;\n }\n generatorId = generator.replace(/[ .-]/g, \"_\");\n return true;\n });\n }\n let formType = null;\n if (info.IsXFAPresent) {\n formType = \"xfa\";\n } else if (info.IsAcroFormPresent) {\n formType = \"acroform\";\n }\n this.externalServices.reportTelemetry({\n type: \"documentInfo\",\n version: versionId,\n generator: generatorId,\n formType,\n });\n\n this.eventBus.dispatch(\"metadataloaded\", { source: this });\n },\n\n /**\n * @private\n */\n async _initializePageLabels(pdfDocument) {\n const labels = await pdfDocument.getPageLabels();\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the page labels resolved.\n }\n if (!labels || AppOptions.get(\"disablePageLabels\")) {\n return;\n }\n const numLabels = labels.length;\n // Ignore page labels that correspond to standard page numbering,\n // or page labels that are all empty.\n let standardLabels = 0,\n emptyLabels = 0;\n for (let i = 0; i < numLabels; i++) {\n const label = labels[i];\n if (label === (i + 1).toString()) {\n standardLabels++;\n } else if (label === \"\") {\n emptyLabels++;\n } else {\n break;\n }\n }\n if (standardLabels >= numLabels || emptyLabels >= numLabels) {\n return;\n }\n const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\n\n pdfViewer.setPageLabels(labels);\n pdfThumbnailViewer.setPageLabels(labels);\n\n // Changing toolbar page display to use labels and we need to set\n // the label of the current page.\n toolbar.setPagesCount(numLabels, true);\n toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n },\n\n /**\n * @private\n */\n _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\n if (!this.pdfHistory) {\n return;\n }\n this.pdfHistory.initialize({\n fingerprint,\n resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\n updateUrl: AppOptions.get(\"historyUpdateUrl\"),\n });\n\n if (this.pdfHistory.initialBookmark) {\n this.initialBookmark = this.pdfHistory.initialBookmark;\n\n this.initialRotation = this.pdfHistory.initialRotation;\n }\n\n // Always let the browser history/document hash take precedence.\n if (\n initialDest &&\n !this.initialBookmark &&\n viewOnLoad === ViewOnLoad.UNKNOWN\n ) {\n this.initialBookmark = JSON.stringify(initialDest);\n // TODO: Re-factor the `PDFHistory` initialization to remove this hack\n // that's currently necessary to prevent weird initial history state.\n this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\n }\n },\n\n /**\n * @private\n */\n _initializeAnnotationStorageCallbacks(pdfDocument) {\n if (pdfDocument !== this.pdfDocument) {\n return;\n }\n const { annotationStorage } = pdfDocument;\n\n annotationStorage.onSetModified = () => {\n window.addEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this._annotationStorageModified = true;\n }\n };\n annotationStorage.onResetModified = () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n delete this._annotationStorageModified;\n }\n };\n },\n\n setInitialView(\n storedHash,\n { rotation, sidebarView, scrollMode, spreadMode } = {}\n ) {\n const setRotation = angle => {\n if (isValidRotation(angle)) {\n this.pdfViewer.pagesRotation = angle;\n }\n };\n const setViewerModes = (scroll, spread) => {\n if (isValidScrollMode(scroll)) {\n this.pdfViewer.scrollMode = scroll;\n }\n if (isValidSpreadMode(spread)) {\n this.pdfViewer.spreadMode = spread;\n }\n };\n this.isInitialViewSet = true;\n this.pdfSidebar.setInitialView(sidebarView);\n\n setViewerModes(scrollMode, spreadMode);\n\n if (this.initialBookmark) {\n setRotation(this.initialRotation);\n delete this.initialRotation;\n\n this.pdfLinkService.setHash(this.initialBookmark);\n this.initialBookmark = null;\n } else if (storedHash) {\n setRotation(rotation);\n\n this.pdfLinkService.setHash(storedHash);\n }\n\n // Ensure that the correct page number is displayed in the UI,\n // even if the active page didn't change during document load.\n this.toolbar.setPageNumber(\n this.pdfViewer.currentPageNumber,\n this.pdfViewer.currentPageLabel\n );\n this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n\n if (!this.pdfViewer.currentScaleValue) {\n // Scale was not initialized: invalid bookmark or scale was not specified.\n // Setting the default one.\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n },\n\n /**\n * @private\n */\n _cleanup() {\n if (!this.pdfDocument) {\n return; // run cleanup when document is loaded\n }\n this.pdfViewer.cleanup();\n this.pdfThumbnailViewer.cleanup();\n\n // We don't want to remove fonts used by active page SVGs.\n this.pdfDocument.cleanup(\n /* keepLoadedFonts = */ this.pdfViewer.renderer === RendererType.SVG\n );\n },\n\n forceRendering() {\n this.pdfRenderingQueue.printing = !!this.printService;\n this.pdfRenderingQueue.isThumbnailViewEnabled =\n this.pdfSidebar.isThumbnailViewVisible;\n this.pdfRenderingQueue.renderHighestPriority();\n },\n\n beforePrint() {\n // Given that the \"beforeprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchWillPrint();\n\n if (this.printService) {\n // There is no way to suppress beforePrint/afterPrint events,\n // but PDFPrintService may generate double events -- this will ignore\n // the second event that will be coming from native window.print().\n return;\n }\n\n if (!this.supportsPrinting) {\n this.l10n.get(\"printing_not_supported\").then(msg => {\n this._otherError(msg);\n });\n return;\n }\n\n // The beforePrint is a sync method and we need to know layout before\n // returning from this method. Ensure that we can get sizes of the pages.\n if (!this.pdfViewer.pageViewsReady) {\n this.l10n.get(\"printing_not_ready\").then(msg => {\n // eslint-disable-next-line no-alert\n window.alert(msg);\n });\n return;\n }\n\n const pagesOverview = this.pdfViewer.getPagesOverview();\n const printContainer = this.appConfig.printContainer;\n const printResolution = AppOptions.get(\"printResolution\");\n const optionalContentConfigPromise =\n this.pdfViewer.optionalContentConfigPromise;\n\n const printService = PDFPrintServiceFactory.instance.createPrintService(\n this.pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n this.l10n\n );\n this.printService = printService;\n this.forceRendering();\n\n printService.layout();\n\n this.externalServices.reportTelemetry({\n type: \"print\",\n });\n },\n\n afterPrint() {\n // Given that the \"afterprint\" browser event is synchronous, we\n // unfortunately cannot await the scripting event dispatching here.\n this.pdfScriptingManager.dispatchDidPrint();\n\n if (this.printService) {\n this.printService.destroy();\n this.printService = null;\n\n this.pdfDocument?.annotationStorage.resetModified();\n }\n this.forceRendering();\n },\n\n rotatePages(delta) {\n this.pdfViewer.pagesRotation += delta;\n // Note that the thumbnail viewer is updated, and rendering is triggered,\n // in the 'rotationchanging' event handler.\n },\n\n requestPresentationMode() {\n this.pdfPresentationMode?.request();\n },\n\n triggerPrinting() {\n if (!this.supportsPrinting) {\n return;\n }\n window.print();\n },\n\n bindEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.beforePrint = this.beforePrint.bind(this);\n _boundEvents.afterPrint = this.afterPrint.bind(this);\n\n eventBus._on(\"resize\", webViewerResize);\n eventBus._on(\"hashchange\", webViewerHashchange);\n eventBus._on(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._on(\"afterprint\", _boundEvents.afterPrint);\n eventBus._on(\"pagerendered\", webViewerPageRendered);\n eventBus._on(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._on(\"pagechanging\", webViewerPageChanging);\n eventBus._on(\"scalechanging\", webViewerScaleChanging);\n eventBus._on(\"rotationchanging\", webViewerRotationChanging);\n eventBus._on(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._on(\"pagemode\", webViewerPageMode);\n eventBus._on(\"namedaction\", webViewerNamedAction);\n eventBus._on(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._on(\"presentationmode\", webViewerPresentationMode);\n eventBus._on(\"print\", webViewerPrint);\n eventBus._on(\"download\", webViewerDownload);\n eventBus._on(\"save\", webViewerSave);\n eventBus._on(\"firstpage\", webViewerFirstPage);\n eventBus._on(\"lastpage\", webViewerLastPage);\n eventBus._on(\"nextpage\", webViewerNextPage);\n eventBus._on(\"previouspage\", webViewerPreviousPage);\n eventBus._on(\"zoomin\", webViewerZoomIn);\n eventBus._on(\"zoomout\", webViewerZoomOut);\n eventBus._on(\"zoomreset\", webViewerZoomReset);\n eventBus._on(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._on(\"scalechanged\", webViewerScaleChanged);\n eventBus._on(\"rotatecw\", webViewerRotateCw);\n eventBus._on(\"rotateccw\", webViewerRotateCcw);\n eventBus._on(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._on(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._on(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._on(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._on(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._on(\"documentproperties\", webViewerDocumentProperties);\n eventBus._on(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._on(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._on(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (AppOptions.get(\"pdfBug\")) {\n _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug;\n\n eventBus._on(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._on(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._on(\"fileinputchange\", webViewerFileInputChange);\n eventBus._on(\"openfile\", webViewerOpenFile);\n }\n },\n\n bindWindowEvents() {\n const { eventBus, _boundEvents } = this;\n\n _boundEvents.windowResize = () => {\n eventBus.dispatch(\"resize\", { source: window });\n };\n _boundEvents.windowHashChange = () => {\n eventBus.dispatch(\"hashchange\", {\n source: window,\n hash: document.location.hash.substring(1),\n });\n };\n _boundEvents.windowBeforePrint = () => {\n eventBus.dispatch(\"beforeprint\", { source: window });\n };\n _boundEvents.windowAfterPrint = () => {\n eventBus.dispatch(\"afterprint\", { source: window });\n };\n _boundEvents.windowUpdateFromSandbox = event => {\n eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n };\n\n window.addEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.addEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.addEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.addEventListener(\"click\", webViewerClick);\n window.addEventListener(\"keydown\", webViewerKeyDown);\n window.addEventListener(\"resize\", _boundEvents.windowResize);\n window.addEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.addEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.addEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.addEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n },\n\n unbindEvents() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: unbindEvents\");\n }\n const { eventBus, _boundEvents } = this;\n\n eventBus._off(\"resize\", webViewerResize);\n eventBus._off(\"hashchange\", webViewerHashchange);\n eventBus._off(\"beforeprint\", _boundEvents.beforePrint);\n eventBus._off(\"afterprint\", _boundEvents.afterPrint);\n eventBus._off(\"pagerendered\", webViewerPageRendered);\n eventBus._off(\"updateviewarea\", webViewerUpdateViewarea);\n eventBus._off(\"pagechanging\", webViewerPageChanging);\n eventBus._off(\"scalechanging\", webViewerScaleChanging);\n eventBus._off(\"rotationchanging\", webViewerRotationChanging);\n eventBus._off(\"sidebarviewchanged\", webViewerSidebarViewChanged);\n eventBus._off(\"pagemode\", webViewerPageMode);\n eventBus._off(\"namedaction\", webViewerNamedAction);\n eventBus._off(\"presentationmodechanged\", webViewerPresentationModeChanged);\n eventBus._off(\"presentationmode\", webViewerPresentationMode);\n eventBus._off(\"print\", webViewerPrint);\n eventBus._off(\"download\", webViewerDownload);\n eventBus._off(\"save\", webViewerSave);\n eventBus._off(\"firstpage\", webViewerFirstPage);\n eventBus._off(\"lastpage\", webViewerLastPage);\n eventBus._off(\"nextpage\", webViewerNextPage);\n eventBus._off(\"previouspage\", webViewerPreviousPage);\n eventBus._off(\"zoomin\", webViewerZoomIn);\n eventBus._off(\"zoomout\", webViewerZoomOut);\n eventBus._off(\"zoomreset\", webViewerZoomReset);\n eventBus._off(\"pagenumberchanged\", webViewerPageNumberChanged);\n eventBus._off(\"scalechanged\", webViewerScaleChanged);\n eventBus._off(\"rotatecw\", webViewerRotateCw);\n eventBus._off(\"rotateccw\", webViewerRotateCcw);\n eventBus._off(\"optionalcontentconfig\", webViewerOptionalContentConfig);\n eventBus._off(\"switchscrollmode\", webViewerSwitchScrollMode);\n eventBus._off(\"scrollmodechanged\", webViewerScrollModeChanged);\n eventBus._off(\"switchspreadmode\", webViewerSwitchSpreadMode);\n eventBus._off(\"spreadmodechanged\", webViewerSpreadModeChanged);\n eventBus._off(\"documentproperties\", webViewerDocumentProperties);\n eventBus._off(\"findfromurlhash\", webViewerFindFromUrlHash);\n eventBus._off(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount);\n eventBus._off(\"updatefindcontrolstate\", webViewerUpdateFindControlState);\n\n if (_boundEvents.reportPageStatsPDFBug) {\n eventBus._off(\"pagerendered\", _boundEvents.reportPageStatsPDFBug);\n eventBus._off(\"pagechanging\", _boundEvents.reportPageStatsPDFBug);\n\n _boundEvents.reportPageStatsPDFBug = null;\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus._off(\"fileinputchange\", webViewerFileInputChange);\n eventBus._off(\"openfile\", webViewerOpenFile);\n }\n\n _boundEvents.beforePrint = null;\n _boundEvents.afterPrint = null;\n },\n\n unbindWindowEvents() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: unbindWindowEvents\");\n }\n const { _boundEvents } = this;\n\n window.removeEventListener(\"visibilitychange\", webViewerVisibilityChange);\n window.removeEventListener(\"wheel\", webViewerWheel, { passive: false });\n window.removeEventListener(\"touchstart\", webViewerTouchStart, {\n passive: false,\n });\n window.removeEventListener(\"click\", webViewerClick);\n window.removeEventListener(\"keydown\", webViewerKeyDown);\n window.removeEventListener(\"resize\", _boundEvents.windowResize);\n window.removeEventListener(\"hashchange\", _boundEvents.windowHashChange);\n window.removeEventListener(\"beforeprint\", _boundEvents.windowBeforePrint);\n window.removeEventListener(\"afterprint\", _boundEvents.windowAfterPrint);\n window.removeEventListener(\n \"updatefromsandbox\",\n _boundEvents.windowUpdateFromSandbox\n );\n\n _boundEvents.windowResize = null;\n _boundEvents.windowHashChange = null;\n _boundEvents.windowBeforePrint = null;\n _boundEvents.windowAfterPrint = null;\n _boundEvents.windowUpdateFromSandbox = null;\n },\n\n accumulateWheelTicks(ticks) {\n // If the scroll direction changed, reset the accumulated wheel ticks.\n if (\n (this._wheelUnusedTicks > 0 && ticks < 0) ||\n (this._wheelUnusedTicks < 0 && ticks > 0)\n ) {\n this._wheelUnusedTicks = 0;\n }\n this._wheelUnusedTicks += ticks;\n const wholeTicks =\n Math.sign(this._wheelUnusedTicks) *\n Math.floor(Math.abs(this._wheelUnusedTicks));\n this._wheelUnusedTicks -= wholeTicks;\n return wholeTicks;\n },\n\n /**\n * Should be called *after* all pages have loaded, or if an error occurred,\n * to unblock the \"load\" event; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\n * @private\n */\n _unblockDocumentLoadEvent() {\n document.blockUnblockOnload?.(false);\n\n // Ensure that this method is only ever run once.\n this._unblockDocumentLoadEvent = () => {};\n },\n\n /**\n * @ignore\n */\n _reportDocumentStatsTelemetry() {\n const { stats } = this.pdfDocument;\n if (stats !== this._docStats) {\n this._docStats = stats;\n\n this.externalServices.reportTelemetry({\n type: \"documentStats\",\n stats,\n });\n }\n },\n\n /**\n * Used together with the integration-tests, to enable awaiting full\n * initialization of the scripting/sandbox.\n */\n get scriptingReady() {\n return this.pdfScriptingManager.ready;\n },\n};\n\nlet validateFileURL;\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const HOSTED_VIEWER_ORIGINS = [\n \"null\",\n \"http://mozilla.github.io\",\n \"https://mozilla.github.io\",\n ];\n validateFileURL = function (file) {\n if (!file) {\n return;\n }\n try {\n const viewerOrigin = new URL(window.location.href).origin || \"null\";\n if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n // Hosted or local viewer, allow for any file locations\n return;\n }\n const fileOrigin = new URL(file, window.location.href).origin;\n // Removing of the following line will not guarantee that the viewer will\n // start accepting URLs from foreign origin -- CORS headers on the remote\n // server must be properly configured.\n if (fileOrigin !== viewerOrigin) {\n throw new Error(\"file origin does not match viewer's\");\n }\n } catch (ex) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, { message: ex?.message });\n });\n throw ex;\n }\n };\n}\n\nasync function loadFakeWorker() {\n GlobalWorkerOptions.workerSrc ||= AppOptions.get(\"workerSrc\");\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n window.pdfjsWorker = await import(\"pdfjs/core/worker.js\");\n return;\n }\n await loadScript(PDFWorker.workerSrc);\n}\n\nasync function loadPDFBug(self) {\n const { debuggerScriptPath } = self.appConfig;\n const { PDFBug } =\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? await import(debuggerScriptPath) // eslint-disable-line no-unsanitized/method\n : await import(debuggerScriptPath); // eslint-disable-line no-undef\n\n self._PDFBug = PDFBug;\n}\n\nfunction reportPageStatsPDFBug({ pageNumber }) {\n if (!globalThis.Stats?.enabled) {\n return;\n }\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats);\n}\n\nfunction webViewerInitialized() {\n const { appConfig, eventBus } = PDFViewerApplication;\n let file;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const queryString = document.location.search.substring(1);\n const params = parseQueryString(queryString);\n file = params.get(\"file\") ?? AppOptions.get(\"defaultUrl\");\n validateFileURL(file);\n } else if (PDFJSDev.test(\"MOZCENTRAL\")) {\n file = window.location.href;\n } else if (PDFJSDev.test(\"CHROME\")) {\n file = AppOptions.get(\"defaultUrl\");\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const fileInput = appConfig.openFileInput;\n fileInput.value = null;\n\n fileInput.addEventListener(\"change\", function (evt) {\n const { files } = evt.target;\n if (!files || files.length === 0) {\n return;\n }\n eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.target,\n });\n });\n\n // Enable dragging-and-dropping a new PDF file onto the viewerContainer.\n appConfig.mainContainer.addEventListener(\"dragover\", function (evt) {\n evt.preventDefault();\n\n evt.dataTransfer.dropEffect = \"move\";\n });\n appConfig.mainContainer.addEventListener(\"drop\", function (evt) {\n evt.preventDefault();\n\n const { files } = evt.dataTransfer;\n if (!files || files.length === 0) {\n return;\n }\n eventBus.dispatch(\"fileinputchange\", {\n source: this,\n fileInput: evt.dataTransfer,\n });\n });\n }\n\n if (!PDFViewerApplication.supportsDocumentFonts) {\n AppOptions.set(\"disableFontFace\", true);\n PDFViewerApplication.l10n.get(\"web_fonts_disabled\").then(msg => {\n console.warn(msg);\n });\n }\n\n if (!PDFViewerApplication.supportsPrinting) {\n appConfig.toolbar.print.classList.add(\"hidden\");\n appConfig.secondaryToolbar.printButton.classList.add(\"hidden\");\n }\n\n if (!PDFViewerApplication.supportsFullscreen) {\n appConfig.toolbar.presentationModeButton.classList.add(\"hidden\");\n appConfig.secondaryToolbar.presentationModeButton.classList.add(\"hidden\");\n }\n\n if (PDFViewerApplication.supportsIntegratedFind) {\n appConfig.toolbar.viewFind.classList.add(\"hidden\");\n }\n\n appConfig.mainContainer.addEventListener(\n \"transitionend\",\n function (evt) {\n if (evt.target === /* mainContainer */ this) {\n eventBus.dispatch(\"resize\", { source: this });\n }\n },\n true\n );\n\n try {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (file) {\n PDFViewerApplication.open(file);\n } else {\n PDFViewerApplication._hideViewBookmark();\n }\n } else if (PDFJSDev.test(\"MOZCENTRAL || CHROME\")) {\n PDFViewerApplication.setTitleUsingUrl(file, /* downloadUrl = */ file);\n PDFViewerApplication.initPassiveLoading();\n } else {\n throw new Error(\"Not implemented: webViewerInitialized\");\n }\n } catch (reason) {\n PDFViewerApplication.l10n.get(\"loading_error\").then(msg => {\n PDFViewerApplication._documentError(msg, reason);\n });\n }\n}\n\nfunction webViewerPageRendered({ pageNumber, error }) {\n // If the page is still visible when it has finished rendering,\n // ensure that the page number input loading indicator is hidden.\n if (pageNumber === PDFViewerApplication.page) {\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n }\n\n // Use the rendered page to set the corresponding thumbnail image.\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n const pageView = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ pageNumber - 1\n );\n const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(\n /* index = */ pageNumber - 1\n );\n if (pageView && thumbnailView) {\n thumbnailView.setImage(pageView);\n }\n }\n\n if (error) {\n PDFViewerApplication.l10n.get(\"rendering_error\").then(msg => {\n PDFViewerApplication._otherError(msg, error);\n });\n }\n\n // It is a good time to report stream and font types.\n PDFViewerApplication._reportDocumentStatsTelemetry();\n}\n\nfunction webViewerPageMode({ mode }) {\n // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\n let view;\n switch (mode) {\n case \"thumbs\":\n view = SidebarView.THUMBS;\n break;\n case \"bookmarks\":\n case \"outline\": // non-standard\n view = SidebarView.OUTLINE;\n break;\n case \"attachments\": // non-standard\n view = SidebarView.ATTACHMENTS;\n break;\n case \"layers\": // non-standard\n view = SidebarView.LAYERS;\n break;\n case \"none\":\n view = SidebarView.NONE;\n break;\n default:\n console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n return;\n }\n PDFViewerApplication.pdfSidebar.switchView(view, /* forceOpen = */ true);\n}\n\nfunction webViewerNamedAction(evt) {\n // Processing a couple of named actions that might be useful, see also\n // `PDFLinkService.executeNamedAction`.\n switch (evt.action) {\n case \"GoToPage\":\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n break;\n\n case \"Find\":\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.toggle();\n }\n break;\n\n case \"Print\":\n PDFViewerApplication.triggerPrinting();\n break;\n\n case \"SaveAs\":\n webViewerSave();\n break;\n }\n}\n\nfunction webViewerPresentationModeChanged(evt) {\n PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\n}\n\nfunction webViewerSidebarViewChanged(evt) {\n PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\n PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"sidebarView\", evt.view).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerUpdateViewarea(evt) {\n const location = evt.location;\n\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store\n ?.setMultiple({\n page: location.pageNumber,\n zoom: location.scale,\n scrollLeft: location.left,\n scrollTop: location.top,\n rotation: location.rotation,\n })\n .catch(() => {\n // Unable to write to storage.\n });\n }\n const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(\n location.pdfOpenParams\n );\n PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\n href;\n\n // Show/hide the loading indicator in the page number input element.\n const currentPage = PDFViewerApplication.pdfViewer.getPageView(\n /* index = */ PDFViewerApplication.page - 1\n );\n const loading = currentPage?.renderingState !== RenderingStates.FINISHED;\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\n\nfunction webViewerScrollModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"scrollMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerSpreadModeChanged(evt) {\n if (PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n PDFViewerApplication.store?.set(\"spreadMode\", evt.mode).catch(() => {\n // Unable to write to storage.\n });\n }\n}\n\nfunction webViewerResize() {\n const { pdfDocument, pdfViewer } = PDFViewerApplication;\n pdfViewer.updateContainerHeightCss();\n\n if (!pdfDocument) {\n return;\n }\n const currentScaleValue = pdfViewer.currentScaleValue;\n if (\n currentScaleValue === \"auto\" ||\n currentScaleValue === \"page-fit\" ||\n currentScaleValue === \"page-width\"\n ) {\n // Note: the scale is constant for 'page-actual'.\n pdfViewer.currentScaleValue = currentScaleValue;\n }\n pdfViewer.update();\n}\n\nfunction webViewerHashchange(evt) {\n const hash = evt.hash;\n if (!hash) {\n return;\n }\n if (!PDFViewerApplication.isInitialViewSet) {\n PDFViewerApplication.initialBookmark = hash;\n } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\n PDFViewerApplication.pdfLinkService.setHash(hash);\n }\n}\n\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-var\n var webViewerFileInputChange = function (evt) {\n if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\n return; // Opening a new PDF file isn't supported in Presentation Mode.\n }\n const file = evt.fileInput.files[0];\n\n let url = URL.createObjectURL(file);\n if (file.name) {\n url = { url, originalUrl: file.name };\n }\n PDFViewerApplication.open(url);\n };\n\n // eslint-disable-next-line no-var\n var webViewerOpenFile = function (evt) {\n const fileInput = PDFViewerApplication.appConfig.openFileInput;\n fileInput.click();\n };\n}\n\nfunction webViewerPresentationMode() {\n PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerPrint() {\n PDFViewerApplication.triggerPrinting();\n}\nfunction webViewerDownload() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"download\" });\n}\nfunction webViewerSave() {\n PDFViewerApplication.downloadOrSave({ sourceEventType: \"save\" });\n}\nfunction webViewerFirstPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = 1;\n }\n}\nfunction webViewerLastPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n }\n}\nfunction webViewerNextPage() {\n PDFViewerApplication.pdfViewer.nextPage();\n}\nfunction webViewerPreviousPage() {\n PDFViewerApplication.pdfViewer.previousPage();\n}\nfunction webViewerZoomIn() {\n PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n PDFViewerApplication.zoomOut();\n}\nfunction webViewerZoomReset() {\n PDFViewerApplication.zoomReset();\n}\nfunction webViewerPageNumberChanged(evt) {\n const pdfViewer = PDFViewerApplication.pdfViewer;\n // Note that for `<input type=\"number\">` HTML elements, an empty string will\n // be returned for non-number inputs; hence we simply do nothing in that case.\n if (evt.value !== \"\") {\n PDFViewerApplication.pdfLinkService.goToPage(evt.value);\n }\n\n // Ensure that the page number input displays the correct value, even if the\n // value entered by the user was invalid (e.g. a floating point number).\n if (\n evt.value !== pdfViewer.currentPageNumber.toString() &&\n evt.value !== pdfViewer.currentPageLabel\n ) {\n PDFViewerApplication.toolbar.setPageNumber(\n pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel\n );\n }\n}\nfunction webViewerScaleChanged(evt) {\n PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerOptionalContentConfig(evt) {\n PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\n}\nfunction webViewerSwitchScrollMode(evt) {\n PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n}\nfunction webViewerSwitchSpreadMode(evt) {\n PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n}\nfunction webViewerDocumentProperties() {\n PDFViewerApplication.pdfDocumentProperties.open();\n}\n\nfunction webViewerFindFromUrlHash(evt) {\n PDFViewerApplication.eventBus.dispatch(\"find\", {\n source: evt.source,\n type: \"\",\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: false,\n entireWord: false,\n highlightAll: true,\n findPrevious: false,\n matchDiacritics: true,\n });\n}\n\nfunction webViewerUpdateFindMatchesCount({ matchesCount }) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n } else {\n PDFViewerApplication.findBar.updateResultsCount(matchesCount);\n }\n}\n\nfunction webViewerUpdateFindControlState({\n state,\n previous,\n matchesCount,\n rawQuery,\n}) {\n if (PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.externalServices.updateFindControlState({\n result: state,\n findPrevious: previous,\n matchesCount,\n rawQuery,\n });\n } else {\n PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);\n }\n}\n\nfunction webViewerScaleChanging(evt) {\n PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n\n PDFViewerApplication.pdfViewer.update();\n}\n\nfunction webViewerRotationChanging(evt) {\n PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n\n PDFViewerApplication.forceRendering();\n // Ensure that the active page doesn't change during rotation.\n PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n}\n\nfunction webViewerPageChanging({ pageNumber, pageLabel }) {\n PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel);\n PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber);\n\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber);\n }\n}\n\nfunction webViewerVisibilityChange(evt) {\n if (document.visibilityState === \"visible\") {\n // Ignore mouse wheel zooming during tab switches (bug 1503412).\n setZoomDisabledTimeout();\n }\n}\n\nlet zoomDisabledTimeout = null;\nfunction setZoomDisabledTimeout() {\n if (zoomDisabledTimeout) {\n clearTimeout(zoomDisabledTimeout);\n }\n zoomDisabledTimeout = setTimeout(function () {\n zoomDisabledTimeout = null;\n }, WHEEL_ZOOM_DISABLED_TIMEOUT);\n}\n\nfunction webViewerWheel(evt) {\n const { pdfViewer, supportedMouseWheelZoomModifierKeys } =\n PDFViewerApplication;\n\n if (pdfViewer.isInPresentationMode) {\n return;\n }\n\n if (\n (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey) ||\n (evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey)\n ) {\n // Only zoom the pages, not the entire viewer.\n evt.preventDefault();\n // NOTE: this check must be placed *after* preventDefault.\n if (zoomDisabledTimeout || document.visibilityState === \"hidden\") {\n return;\n }\n\n // It is important that we query deltaMode before delta{X,Y}, so that\n // Firefox doesn't switch to DOM_DELTA_PIXEL mode for compat with other\n // browsers, see https://bugzilla.mozilla.org/show_bug.cgi?id=1392460.\n const deltaMode = evt.deltaMode;\n const delta = normalizeWheelEventDirection(evt);\n const previousScale = pdfViewer.currentScale;\n\n let ticks = 0;\n if (\n deltaMode === WheelEvent.DOM_DELTA_LINE ||\n deltaMode === WheelEvent.DOM_DELTA_PAGE\n ) {\n // For line-based devices, use one tick per event, because different\n // OSs have different defaults for the number lines. But we generally\n // want one \"clicky\" roll of the wheel (which produces one event) to\n // adjust the zoom by one step.\n if (Math.abs(delta) >= 1) {\n ticks = Math.sign(delta);\n } else {\n // If we're getting fractional lines (I can't think of a scenario\n // this might actually happen), be safe and use the accumulator.\n ticks = PDFViewerApplication.accumulateWheelTicks(delta);\n }\n } else {\n // pixel-based devices\n const PIXELS_PER_LINE_SCALE = 30;\n ticks = PDFViewerApplication.accumulateWheelTicks(\n delta / PIXELS_PER_LINE_SCALE\n );\n }\n\n if (ticks < 0) {\n PDFViewerApplication.zoomOut(-ticks);\n } else if (ticks > 0) {\n PDFViewerApplication.zoomIn(ticks);\n }\n\n const currentScale = pdfViewer.currentScale;\n if (previousScale !== currentScale) {\n // After scaling the page via zoomIn/zoomOut, the position of the upper-\n // left corner is restored. When the mouse wheel is used, the position\n // under the cursor should be restored instead.\n const scaleCorrectionFactor = currentScale / previousScale - 1;\n const rect = pdfViewer.container.getBoundingClientRect();\n const dx = evt.clientX - rect.left;\n const dy = evt.clientY - rect.top;\n pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n }\n } else {\n setZoomDisabledTimeout();\n }\n}\n\nfunction webViewerTouchStart(evt) {\n if (evt.touches.length > 1) {\n // Disable touch-based zooming, because the entire UI bits gets zoomed and\n // that doesn't look great. If we do want to have a good touch-based\n // zooming experience, we need to implement smooth zoom capability (probably\n // using a CSS transform for faster visual response, followed by async\n // re-rendering at the final zoom level) and do gesture detection on the\n // touchmove events to drive it. Or if we want to settle for a less good\n // experience we can make the touchmove events drive the existing step-zoom\n // behaviour that the ctrl+mousewheel path takes.\n evt.preventDefault();\n }\n}\n\nfunction webViewerClick(evt) {\n if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n return;\n }\n const appConfig = PDFViewerApplication.appConfig;\n if (\n PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\n (appConfig.toolbar.container.contains(evt.target) &&\n evt.target !== appConfig.secondaryToolbar.toggleButton)\n ) {\n PDFViewerApplication.secondaryToolbar.close();\n }\n}\n\nfunction webViewerKeyDown(evt) {\n if (PDFViewerApplication.overlayManager.active) {\n return;\n }\n const { eventBus, pdfViewer } = PDFViewerApplication;\n const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\n\n let handled = false,\n ensureViewerFocused = false;\n const cmd =\n (evt.ctrlKey ? 1 : 0) |\n (evt.altKey ? 2 : 0) |\n (evt.shiftKey ? 4 : 0) |\n (evt.metaKey ? 8 : 0);\n\n // First, handle the key bindings that are independent whether an input\n // control is selected or not.\n if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n // either CTRL or META key with optional SHIFT.\n switch (evt.keyCode) {\n case 70: // f\n if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\n PDFViewerApplication.findBar.open();\n handled = true;\n }\n break;\n case 71: // g\n if (!PDFViewerApplication.supportsIntegratedFind) {\n const { state } = PDFViewerApplication.findController;\n if (state) {\n const eventState = Object.assign(Object.create(null), state, {\n source: window,\n type: \"again\",\n findPrevious: cmd === 5 || cmd === 12,\n });\n eventBus.dispatch(\"find\", eventState);\n }\n handled = true;\n }\n break;\n case 61: // FF/Mac '='\n case 107: // FF '+' and '='\n case 187: // Chrome '+'\n case 171: // FF with German keyboard\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomIn();\n }\n handled = true;\n break;\n case 173: // FF/Mac '-'\n case 109: // FF '-'\n case 189: // Chrome '-'\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomOut();\n }\n handled = true;\n break;\n case 48: // '0'\n case 96: // '0' on Numpad of Swedish keyboard\n if (!isViewerInPresentationMode) {\n // keeping it unhandled (to restore page zoom to 100%)\n setTimeout(function () {\n // ... and resetting the scale after browser adjusts its scale\n PDFViewerApplication.zoomReset();\n });\n handled = false;\n }\n break;\n\n case 38: // up arrow\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 40: // down arrow\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n }\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC || CHROME\")) {\n // CTRL or META without shift\n if (cmd === 1 || cmd === 8) {\n switch (evt.keyCode) {\n case 83: // s\n eventBus.dispatch(\"download\", { source: window });\n handled = true;\n break;\n\n case 79: // o\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n eventBus.dispatch(\"openfile\", { source: window });\n handled = true;\n }\n break;\n }\n }\n }\n\n // CTRL+ALT or Option+Command\n if (cmd === 3 || cmd === 10) {\n switch (evt.keyCode) {\n case 80: // p\n PDFViewerApplication.requestPresentationMode();\n handled = true;\n break;\n case 71: // g\n // focuses input#pageNumber field\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n handled = true;\n break;\n }\n }\n\n if (handled) {\n if (ensureViewerFocused && !isViewerInPresentationMode) {\n pdfViewer.focus();\n }\n evt.preventDefault();\n return;\n }\n\n // Some shortcuts should not get handled if a control/input element\n // is selected.\n const curElement = getActiveOrFocusedElement();\n const curElementTagName = curElement?.tagName.toUpperCase();\n if (\n curElementTagName === \"INPUT\" ||\n curElementTagName === \"TEXTAREA\" ||\n curElementTagName === \"SELECT\" ||\n curElement?.isContentEditable\n ) {\n // Make sure that the secondary toolbar is closed when Escape is pressed.\n if (evt.keyCode !== /* Esc = */ 27) {\n return;\n }\n }\n\n // No control key pressed at all.\n if (cmd === 0) {\n let turnPage = 0,\n turnOnlyIfPageFit = false;\n switch (evt.keyCode) {\n case 38: // up arrow\n case 33: // pg up\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 8: // backspace\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = -1;\n break;\n case 37: // left arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 75: // 'k'\n case 80: // 'p'\n turnPage = -1;\n break;\n case 27: // esc key\n if (PDFViewerApplication.secondaryToolbar.isOpen) {\n PDFViewerApplication.secondaryToolbar.close();\n handled = true;\n }\n if (\n !PDFViewerApplication.supportsIntegratedFind &&\n PDFViewerApplication.findBar.opened\n ) {\n PDFViewerApplication.findBar.close();\n handled = true;\n }\n break;\n case 40: // down arrow\n case 34: // pg down\n // vertical scrolling using arrow/pg keys\n if (pdfViewer.isVerticalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 13: // enter key\n case 32: // spacebar\n if (!isViewerInPresentationMode) {\n turnOnlyIfPageFit = true;\n }\n turnPage = 1;\n break;\n case 39: // right arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n turnOnlyIfPageFit = true;\n }\n /* falls through */\n case 74: // 'j'\n case 78: // 'n'\n turnPage = 1;\n break;\n\n case 36: // home\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 35: // end\n if (\n isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount\n ) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n\n case 83: // 's'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.SELECT);\n break;\n case 72: // 'h'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.HAND);\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(90);\n break;\n\n case 115: // F4\n PDFViewerApplication.pdfSidebar.toggle();\n break;\n }\n\n if (\n turnPage !== 0 &&\n (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \"page-fit\")\n ) {\n if (turnPage > 0) {\n pdfViewer.nextPage();\n } else {\n pdfViewer.previousPage();\n }\n handled = true;\n }\n }\n\n // shift-key\n if (cmd === 4) {\n switch (evt.keyCode) {\n case 13: // enter key\n case 32: // spacebar\n if (\n !isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== \"page-fit\"\n ) {\n break;\n }\n pdfViewer.previousPage();\n\n handled = true;\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(-90);\n break;\n }\n }\n\n if (!handled && !isViewerInPresentationMode) {\n // 33=Page Up 34=Page Down 35=End 36=Home\n // 37=Left 38=Up 39=Right 40=Down\n // 32=Spacebar\n if (\n (evt.keyCode >= 33 && evt.keyCode <= 40) ||\n (evt.keyCode === 32 && curElementTagName !== \"BUTTON\")\n ) {\n ensureViewerFocused = true;\n }\n }\n\n if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n // The page container is not focused, but a page navigation key has been\n // pressed. Change the focus to the viewer container to make sure that\n // navigation by keyboard works as expected.\n pdfViewer.focus();\n }\n\n if (handled) {\n evt.preventDefault();\n }\n}\n\nfunction beforeUnload(evt) {\n evt.preventDefault();\n evt.returnValue = \"\";\n return false;\n}\n\n/* Abstract factory for the print service. */\nconst PDFPrintServiceFactory = {\n instance: {\n supportsPrinting: false,\n createPrintService() {\n throw new Error(\"Not implemented: createPrintService\");\n },\n },\n};\n\nexport {\n DefaultExternalServices,\n PDFPrintServiceFactory,\n PDFViewerApplication,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst MIN_SCALE = 0.1;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst SidebarView = {\n UNKNOWN: -1,\n NONE: 0,\n THUMBS: 1, // Default value.\n OUTLINE: 2,\n ATTACHMENTS: 3,\n LAYERS: 4,\n};\n\nconst RendererType = {\n CANVAS: \"canvas\",\n SVG: \"svg\",\n};\n\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2,\n};\n\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n\nconst SpreadMode = {\n UNKNOWN: -1,\n NONE: 0, // Default value.\n ODD: 1,\n EVEN: 2,\n};\n\n// Used by `PDFViewerApplication`, and by the API unit-tests.\nconst AutoPrintRegExp = /\\bprint\\s*\\(/;\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n\n /**\n * @type {number} Horizontal scale.\n */\n this.sx = pixelRatio;\n\n /**\n * @type {number} Vertical scale.\n */\n this.sy = pixelRatio;\n }\n\n /**\n * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n */\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (\n (parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") ||\n getComputedStyle(parent).overflow === \"hidden\"))\n ) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n const debounceScroll = function (evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n const currentX = viewAreaElement.scrollLeft;\n const lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n const currentY = viewAreaElement.scrollTop;\n const lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n const state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\n * @param {string}\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n\nconst NullCharactersRegExp = /\\x00/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n * @param {boolean} [replaceInvisible]\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n console.error(`The argument must be a string.`);\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0,\n b = 1,\n c = 1,\n d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n const p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n const r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * @typedef {Object} GetPageSizeInchesParameters\n * @property {number[]} view\n * @property {number} userUnit\n * @property {number} rotate\n */\n\n/**\n * @typedef {Object} PageSize\n * @property {number} width - In inches.\n * @property {number} height - In inches.\n */\n\n/**\n * Gets the size of the specified page, converted from PDF units to inches.\n * @param {GetPageSizeInchesParameters} params\n * @returns {PageSize}\n */\nfunction getPageSizeInches({ view, userUnit, rotate }) {\n const [x1, y1, x2, y2] = view;\n // We need to take the page rotation into account as well.\n const changeOrientation = rotate % 180 !== 0;\n\n const width = ((x2 - x1) / 72) * userUnit;\n const height = ((y2 - y1) / 72) * userUnit;\n\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height,\n };\n}\n\n/**\n * Helper function for getVisibleElements.\n *\n * @param {number} index - initial guess at the first visible element\n * @param {Array} views - array of pages, into which `index` is an index\n * @param {number} top - the top of the scroll pane\n * @returns {number} less than or equal to `index` that is definitely at or\n * before the first visible element in `views`, but not by too much. (Usually,\n * this will be the first element in the first partially visible row in\n * `views`, although sometimes it goes back one row further.)\n */\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n // binarySearchFirstItem's assumption is that the input is ordered, with only\n // one index where the conditions flips from false to true: [false ...,\n // true...]. With vertical scrolling and spreads, it is possible to have\n // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n // similar sequence, with many more mixed true and false in the middle.\n //\n // So there is no guarantee that the binary search yields the index of the\n // first visible element. It could have been any of the other visible elements\n // that were preceded by a hidden element.\n\n // Of course, if either this element or the previous (hidden) element is also\n // the first element, there's nothing to worry about.\n if (index < 2) {\n return index;\n }\n\n // That aside, the possible cases are represented below.\n //\n // **** = fully hidden\n // A*B* = mix of partially visible and/or hidden pages\n // CDEF = fully visible\n //\n // (1) Binary search could have returned A, in which case we can stop.\n // (2) Binary search could also have returned B, in which case we need to\n // check the whole row.\n // (3) Binary search could also have returned C, in which case we need to\n // check the whole previous row.\n //\n // There's one other possibility:\n //\n // **** = fully hidden\n // ABCD = mix of fully and/or partially visible pages\n //\n // (4) Binary search could only have returned A.\n\n // Initially assume that we need to find the beginning of the current row\n // (case 1, 2, or 4), which means finding a page that is above the current\n // page's top. If the found page is partially visible, we're definitely not in\n // case 3, and this assumption is correct.\n let elt = views[index].div;\n let pageTop = elt.offsetTop + elt.clientTop;\n\n if (pageTop >= top) {\n // The found page is fully visible, so we're actually either in case 3 or 4,\n // and unfortunately we can't tell the difference between them without\n // scanning the entire previous row, so we just conservatively assume that\n // we do need to backtrack to that row. In both cases, the previous page is\n // in the previous row, so use its top instead.\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n\n // Now we backtrack to the first page that still has its bottom below\n // `pageTop`, which is the top of a page in the first visible row (unless\n // we're in case 4, in which case it's the row before that).\n // `index` is found by binary search, so the page at `index - 1` is\n // invisible and we can start looking for potentially visible pages from\n // `index - 2`. (However, if this loop terminates on its first iteration,\n // which is the case when pages are stacked vertically, `index` should remain\n // unchanged, so we use a distinct loop variable.)\n for (let i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n // We have reached the previous row, so stop now.\n // This loop is expected to terminate relatively quickly because the\n // number of pages per row is expected to be small.\n break;\n }\n index = i;\n }\n return index;\n}\n\n/**\n * @typedef {Object} GetVisibleElementsParameters\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n * @property {Array} views - Objects with a `div` property that contains an\n * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n * relevant layout assumptions.\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\n * sorted in descending order of the percent of their padding box that is\n * visible. The default value is `false`.\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\n * laid out horizontally instead of vertically. The default value is `false`.\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n * be in right-to-left mode. The default value is `false`.\n */\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n *\n * Well, pretty generic. There are some assumptions placed on the elements\n * referenced by `views`:\n * - If `horizontal`, no left of any earlier element is to the right of the\n * left of any later element.\n * - Otherwise, `views` can be split into contiguous rows where, within a row,\n * no top of any element is below the bottom of any other element, and\n * between rows, no bottom of any element in an earlier row is below the\n * top of any element in a later row.\n *\n * (Here, top, left, etc. all refer to the padding edge of the element in\n * question. For pages, that ends up being equivalent to the bounding box of the\n * rendering canvas. Earlier and later refer to index in `views`, not page\n * layout.)\n *\n * @param {GetVisibleElementsParameters}\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n */\nfunction getVisibleElements({\n scrollEl,\n views,\n sortByVisibility = false,\n horizontal = false,\n rtl = false,\n}) {\n const top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n const left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n\n // Throughout this \"generic\" function, comments will assume we're working with\n // PDF document pages, which is the most important and complex case. In this\n // case, the visible elements we're actually interested is the page canvas,\n // which is contained in a wrapper which adds no padding/border/margin, which\n // is itself contained in `view.div` which adds no padding (but does add a\n // border). So, as specified in this function's doc comment, this function\n // does all of its work on the padding edge of the provided views, starting at\n // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n // the border). Adding clientWidth/Height gets us the bottom-right corner of\n // the padding edge.\n function isElementBottomAfterViewTop(view) {\n const element = view.div;\n const elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementNextAfterViewHorizontally(view) {\n const element = view.div;\n const elementLeft = element.offsetLeft + element.clientLeft;\n const elementRight = elementLeft + element.clientWidth;\n return rtl ? elementLeft < right : elementRight > left;\n }\n\n const visible = [],\n ids = new Set(),\n numViews = views.length;\n let firstVisibleElementInd = binarySearchFirstItem(\n views,\n horizontal\n ? isElementNextAfterViewHorizontally\n : isElementBottomAfterViewTop\n );\n\n // Please note the return value of the `binarySearchFirstItem` function when\n // no valid element is found (hence the `firstVisibleElementInd` check below).\n if (\n firstVisibleElementInd > 0 &&\n firstVisibleElementInd < numViews &&\n !horizontal\n ) {\n // In wrapped scrolling (or vertical scrolling with spreads), with some page\n // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n // condition: there can be pages with bottoms above the view top between\n // pages with bottoms below. This function detects and corrects that error;\n // see it for more comments.\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n firstVisibleElementInd,\n views,\n top\n );\n }\n\n // lastEdge acts as a cutoff for us to stop looping, because we know all\n // subsequent pages will be hidden.\n //\n // When using wrapped scrolling or vertical scrolling with spreads, we can't\n // simply stop the first time we reach a page below the bottom of the view;\n // the tops of subsequent pages on the same row could still be visible. In\n // horizontal scrolling, we don't have that issue, so we can stop as soon as\n // we pass `right`, without needing the code below that handles the -1 case.\n let lastEdge = horizontal ? right : -1;\n\n for (let i = firstVisibleElementInd; i < numViews; i++) {\n const view = views[i],\n element = view.div;\n const currentWidth = element.offsetLeft + element.clientLeft;\n const currentHeight = element.offsetTop + element.clientTop;\n const viewWidth = element.clientWidth,\n viewHeight = element.clientHeight;\n const viewRight = currentWidth + viewWidth;\n const viewBottom = currentHeight + viewHeight;\n\n if (lastEdge === -1) {\n // As commented above, this is only needed in non-horizontal cases.\n // Setting lastEdge to the bottom of the first page that is partially\n // visible ensures that the next page fully below lastEdge is on the\n // next row, which has to be fully hidden along with all subsequent rows.\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n\n if (\n viewBottom <= top ||\n currentHeight >= bottom ||\n viewRight <= left ||\n currentWidth >= right\n ) {\n continue;\n }\n\n const hiddenHeight =\n Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n const hiddenWidth =\n Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n\n const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n const percent = (fractionHeight * fractionWidth * 100) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent,\n widthPercent: (fractionWidth * 100) | 0,\n });\n ids.add(view.id);\n }\n\n const first = visible[0],\n last = visible[visible.length - 1];\n\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n const pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, ids };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction normalizeWheelEventDirection(evt) {\n let delta = Math.hypot(evt.deltaX, evt.deltaY);\n const angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n return delta;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = normalizeWheelEventDirection(evt);\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\n\nfunction isValidScrollMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(ScrollMode).includes(mode) &&\n mode !== ScrollMode.UNKNOWN\n );\n}\n\nfunction isValidSpreadMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(SpreadMode).includes(mode) &&\n mode !== SpreadMode.UNKNOWN\n );\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nconst animationStarted = new Promise(function (resolve) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof window === \"undefined\"\n ) {\n // Prevent \"ReferenceError: window is not defined\" errors when running the\n // unit-tests in Node.js environments.\n setTimeout(resolve, 20);\n return;\n }\n window.requestAnimationFrame(resolve);\n});\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n constructor(id) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n arguments.length > 1\n ) {\n throw new Error(\n \"ProgressBar no longer accepts any additional options, \" +\n \"please use CSS rules to modify its appearance instead.\"\n );\n }\n this.visible = true;\n\n // Fetch the sub-elements for later.\n this.div = document.querySelector(id + \" .progress\");\n // Get the loading bar element, so it can be resized to fit the viewer.\n this.bar = this.div.parentNode;\n\n this.percent = 0;\n }\n\n #updateBar() {\n if (this._indeterminate) {\n this.div.classList.add(\"indeterminate\");\n return;\n }\n this.div.classList.remove(\"indeterminate\");\n\n const doc = document.documentElement;\n doc.style.setProperty(\"--progressBar-percent\", `${this._percent}%`);\n }\n\n get percent() {\n return this._percent;\n }\n\n set percent(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this.#updateBar();\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n const container = viewer.parentNode;\n const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n const doc = document.documentElement;\n doc.style.setProperty(\"--progressBar-end-offset\", `${scrollbarWidth}px`);\n }\n }\n\n hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add(\"hidden\");\n }\n\n show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n this.bar.classList.remove(\"hidden\");\n }\n}\n\n/**\n * Get the active or focused element in current DOM.\n *\n * Recursively search for the truly active or focused element in case there are\n * shadow DOMs.\n *\n * @returns {Element} the truly active or focused element.\n */\nfunction getActiveOrFocusedElement() {\n let curRoot = document;\n let curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n\n while (curActiveOrFocused?.shadowRoot) {\n curRoot = curActiveOrFocused.shadowRoot;\n curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n }\n\n return curActiveOrFocused;\n}\n\n/**\n * Converts API PageLayout values to the format used by `BaseViewer`.\n * NOTE: This is supported to the extent that the viewer implements the\n * necessary Scroll/Spread modes (since SinglePage, TwoPageLeft,\n * and TwoPageRight all suggests using non-continuous scrolling).\n * @param {string} mode - The API PageLayout value.\n * @returns {Object}\n */\nfunction apiPageLayoutToViewerModes(layout) {\n let scrollMode = ScrollMode.VERTICAL,\n spreadMode = SpreadMode.NONE;\n\n switch (layout) {\n case \"SinglePage\":\n scrollMode = ScrollMode.PAGE;\n break;\n case \"OneColumn\":\n break;\n case \"TwoPageLeft\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnLeft\":\n spreadMode = SpreadMode.ODD;\n break;\n case \"TwoPageRight\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnRight\":\n spreadMode = SpreadMode.EVEN;\n break;\n }\n return { scrollMode, spreadMode };\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case \"UseNone\":\n return SidebarView.NONE;\n case \"UseThumbs\":\n return SidebarView.THUMBS;\n case \"UseOutlines\":\n return SidebarView.OUTLINE;\n case \"UseAttachments\":\n return SidebarView.ATTACHMENTS;\n case \"UseOC\":\n return SidebarView.LAYERS;\n }\n return SidebarView.NONE; // Default value.\n}\n\nexport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n approximateFraction,\n AutoPrintRegExp,\n backtrackBeforeAllVisibleElements, // only exported for testing\n binarySearchFirstItem,\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n getPageSizeInches,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDelta,\n normalizeWheelEventDirection,\n OutputScale,\n parseQueryString,\n PresentationModeState,\n ProgressBar,\n removeNullCharacters,\n RendererType,\n RenderingStates,\n roundToDivide,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst WaitOnType = {\n EVENT: \"event\",\n TIMEOUT: \"timeout\",\n};\n\n/**\n * @typedef {Object} WaitOnEventOrTimeoutParameters\n * @property {Object} target - The event target, can for example be:\n * `window`, `document`, a DOM element, or an {EventBus} instance.\n * @property {string} name - The name of the event.\n * @property {number} delay - The delay, in milliseconds, after which the\n * timeout occurs (if the event wasn't already dispatched).\n */\n\n/**\n * Allows waiting for an event or a timeout, whichever occurs first.\n * Can be used to ensure that an action always occurs, even when an event\n * arrives late or not at all.\n *\n * @param {WaitOnEventOrTimeoutParameters}\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\n */\nfunction waitOnEventOrTimeout({ target, name, delay = 0 }) {\n return new Promise(function (resolve, reject) {\n if (\n typeof target !== \"object\" ||\n !(name && typeof name === \"string\") ||\n !(Number.isInteger(delay) && delay >= 0)\n ) {\n throw new Error(\"waitOnEventOrTimeout - invalid parameters.\");\n }\n\n function handler(type) {\n if (target instanceof EventBus) {\n target._off(name, eventHandler);\n } else {\n target.removeEventListener(name, eventHandler);\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n resolve(type);\n }\n\n const eventHandler = handler.bind(null, WaitOnType.EVENT);\n if (target instanceof EventBus) {\n target._on(name, eventHandler);\n } else {\n target.addEventListener(name, eventHandler);\n }\n\n const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n const timeout = setTimeout(timeoutHandler, delay);\n });\n}\n\n/**\n * Simple event bus for an application. Listeners are attached using the `on`\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\n */\nclass EventBus {\n constructor() {\n this._listeners = Object.create(null);\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n on(eventName, listener, options = null) {\n this._on(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n off(eventName, listener, options = null) {\n this._off(eventName, listener, {\n external: true,\n once: options?.once,\n });\n }\n\n /**\n * @param {string} eventName\n * @param {Object} data\n */\n dispatch(eventName, data) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n let externalListeners;\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n for (const { listener, external, once } of eventListeners.slice(0)) {\n if (once) {\n this._off(eventName, listener);\n }\n if (external) {\n (externalListeners ||= []).push(listener);\n continue;\n }\n listener(data);\n }\n // Dispatch any \"external\" listeners *after* the internal ones, to give the\n // viewer components time to handle events and update their state first.\n if (externalListeners) {\n for (const listener of externalListeners) {\n listener(data);\n }\n externalListeners = null;\n }\n }\n\n /**\n * @ignore\n */\n _on(eventName, listener, options = null) {\n const eventListeners = (this._listeners[eventName] ||= []);\n eventListeners.push({\n listener,\n external: options?.external === true,\n once: options?.once === true,\n });\n }\n\n /**\n * @ignore\n */\n _off(eventName, listener, options = null) {\n const eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n return;\n }\n for (let i = 0, ii = eventListeners.length; i < ii; i++) {\n if (eventListeners[i].listener === listener) {\n eventListeners.splice(i, 1);\n return;\n }\n }\n }\n}\n\n/**\n * NOTE: Only used to support various PDF viewer tests in `mozilla-central`.\n */\nclass AutomationEventBus extends EventBus {\n dispatch(eventName, data) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: AutomationEventBus.dispatch\");\n }\n super.dispatch(eventName, data);\n\n const details = Object.create(null);\n if (data) {\n for (const key in data) {\n const value = data[key];\n if (key === \"source\") {\n if (value === window || value === document) {\n return; // No need to re-dispatch (already) global events.\n }\n continue; // Ignore the `source` property.\n }\n details[key] = value;\n }\n }\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventName, true, true, details);\n document.dispatchEvent(event);\n }\n}\n\nexport { AutomationEventBus, EventBus, waitOnEventOrTimeout, WaitOnType };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, __non_webpack_require__ */\n\n\"use strict\";\n\nlet pdfjsLib;\nif (typeof window !== \"undefined\" && window[\"pdfjs-dist/build/pdf\"]) {\n pdfjsLib = window[\"pdfjs-dist/build/pdf\"];\n} else {\n pdfjsLib = __non_webpack_require__(\"../build/pdf.js\");\n}\nmodule.exports = pdfjsLib;\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GrabToPan } from \"./grab_to_pan.js\";\nimport { PresentationModeState } from \"./ui_utils.js\";\n\nconst CursorTool = {\n SELECT: 0, // The default value.\n HAND: 1,\n ZOOM: 2,\n};\n\n/**\n * @typedef {Object} PDFCursorToolsOptions\n * @property {HTMLDivElement} container - The document container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\n * on load; the constants from {CursorTool} should be used. The default value\n * is `CursorTool.SELECT`.\n */\n\nclass PDFCursorTools {\n /**\n * @param {PDFCursorToolsOptions} options\n */\n constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\n this.container = container;\n this.eventBus = eventBus;\n\n this.active = CursorTool.SELECT;\n this.activeBeforePresentationMode = null;\n\n this.handTool = new GrabToPan({\n element: this.container,\n });\n\n this.#addEventListeners();\n\n // Defer the initial `switchTool` call, to give other viewer components\n // time to initialize *and* register 'cursortoolchanged' event listeners.\n Promise.resolve().then(() => {\n this.switchTool(cursorToolOnLoad);\n });\n }\n\n /**\n * @type {number} One of the values in {CursorTool}.\n */\n get activeTool() {\n return this.active;\n }\n\n /**\n * NOTE: This method is ignored while Presentation Mode is active.\n * @param {number} tool - The cursor mode that should be switched to,\n * must be one of the values in {CursorTool}.\n */\n switchTool(tool) {\n if (this.activeBeforePresentationMode !== null) {\n return; // Cursor tools cannot be used in Presentation Mode.\n }\n if (tool === this.active) {\n return; // The requested tool is already active.\n }\n\n const disableActiveTool = () => {\n switch (this.active) {\n case CursorTool.SELECT:\n break;\n case CursorTool.HAND:\n this.handTool.deactivate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n }\n };\n\n // Enable the new cursor tool.\n switch (tool) {\n case CursorTool.SELECT:\n disableActiveTool();\n break;\n case CursorTool.HAND:\n disableActiveTool();\n this.handTool.activate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n default:\n console.error(`switchTool: \"${tool}\" is an unsupported value.`);\n return;\n }\n // Update the active tool *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = tool;\n\n this.#dispatchEvent();\n }\n\n #dispatchEvent() {\n this.eventBus.dispatch(\"cursortoolchanged\", {\n source: this,\n tool: this.active,\n });\n }\n\n #addEventListeners() {\n this.eventBus._on(\"switchcursortool\", evt => {\n this.switchTool(evt.tool);\n });\n\n this.eventBus._on(\"presentationmodechanged\", evt => {\n switch (evt.state) {\n case PresentationModeState.FULLSCREEN: {\n const previouslyActive = this.active;\n\n this.switchTool(CursorTool.SELECT);\n this.activeBeforePresentationMode = previouslyActive;\n break;\n }\n case PresentationModeState.NORMAL: {\n const previouslyActive = this.activeBeforePresentationMode;\n\n this.activeBeforePresentationMode = null;\n this.switchTool(previouslyActive);\n break;\n }\n }\n });\n }\n}\n\nexport { CursorTool, PDFCursorTools };\n","/* Copyright 2013 Rob Wu <rob@robwu.nl>\n * https://github.com/Rob--W/grab-to-pan.js\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Class name of element which can be grabbed.\nconst CSS_CLASS_GRAB = \"grab-to-pan-grab\";\n\nclass GrabToPan {\n /**\n * Construct a GrabToPan instance for a given HTML element.\n * @param {Element} options.element\n * @param {function} [options.ignoreTarget] - See `ignoreTarget(node)`.\n * @param {function(boolean)} [options.onActiveChanged] - Called when\n * grab-to-pan is (de)activated. The first argument is a boolean that\n * shows whether grab-to-pan is activated.\n */\n constructor(options) {\n this.element = options.element;\n this.document = options.element.ownerDocument;\n if (typeof options.ignoreTarget === \"function\") {\n this.ignoreTarget = options.ignoreTarget;\n }\n this.onActiveChanged = options.onActiveChanged;\n\n // Bind the contexts to ensure that `this` always points to\n // the GrabToPan instance.\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.toggle = this.toggle.bind(this);\n this._onMouseDown = this.#onMouseDown.bind(this);\n this._onMouseMove = this.#onMouseMove.bind(this);\n this._endPan = this.#endPan.bind(this);\n\n // This overlay will be inserted in the document when the mouse moves during\n // a grab operation, to ensure that the cursor has the desired appearance.\n const overlay = (this.overlay = document.createElement(\"div\"));\n overlay.className = \"grab-to-pan-grabbing\";\n }\n\n /**\n * Bind a mousedown event to the element to enable grab-detection.\n */\n activate() {\n if (!this.active) {\n this.active = true;\n this.element.addEventListener(\"mousedown\", this._onMouseDown, true);\n this.element.classList.add(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(true);\n }\n }\n\n /**\n * Removes all events. Any pending pan session is immediately stopped.\n */\n deactivate() {\n if (this.active) {\n this.active = false;\n this.element.removeEventListener(\"mousedown\", this._onMouseDown, true);\n this._endPan();\n this.element.classList.remove(CSS_CLASS_GRAB);\n\n this.onActiveChanged?.(false);\n }\n }\n\n toggle() {\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n /**\n * Whether to not pan if the target element is clicked.\n * Override this method to change the default behaviour.\n *\n * @param {Element} node - The target of the event.\n * @returns {boolean} Whether to not react to the click event.\n */\n ignoreTarget(node) {\n // Check whether the clicked element is, a child of, an input element/link.\n return node.matches(\n \"a[href], a[href] *, input, textarea, button, button *, select, option\"\n );\n }\n\n #onMouseDown(event) {\n if (event.button !== 0 || this.ignoreTarget(event.target)) {\n return;\n }\n if (event.originalTarget) {\n try {\n // eslint-disable-next-line no-unused-expressions\n event.originalTarget.tagName;\n } catch (e) {\n // Mozilla-specific: element is a scrollbar (XUL element)\n return;\n }\n }\n\n this.scrollLeftStart = this.element.scrollLeft;\n this.scrollTopStart = this.element.scrollTop;\n this.clientXStart = event.clientX;\n this.clientYStart = event.clientY;\n this.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.addEventListener(\"mouseup\", this._endPan, true);\n // When a scroll event occurs before a mousemove, assume that the user\n // dragged a scrollbar (necessary for Opera Presto, Safari and IE)\n // (not needed for Chrome/Firefox)\n this.element.addEventListener(\"scroll\", this._endPan, true);\n event.preventDefault();\n event.stopPropagation();\n\n const focusedElement = document.activeElement;\n if (focusedElement && !focusedElement.contains(event.target)) {\n focusedElement.blur();\n }\n }\n\n #onMouseMove(event) {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n if (!(event.buttons & 1)) {\n // The left mouse button is released.\n this._endPan();\n return;\n }\n const xDiff = event.clientX - this.clientXStart;\n const yDiff = event.clientY - this.clientYStart;\n const scrollTop = this.scrollTopStart - yDiff;\n const scrollLeft = this.scrollLeftStart - xDiff;\n if (this.element.scrollTo) {\n this.element.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: \"instant\",\n });\n } else {\n this.element.scrollTop = scrollTop;\n this.element.scrollLeft = scrollLeft;\n }\n if (!this.overlay.parentNode) {\n document.body.appendChild(this.overlay);\n }\n }\n\n #endPan() {\n this.element.removeEventListener(\"scroll\", this._endPan, true);\n this.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n this.document.removeEventListener(\"mouseup\", this._endPan, true);\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.overlay.remove();\n }\n}\n\nexport { GrabToPan };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { parseQueryString, removeNullCharacters } from \"./ui_utils.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n if (!url || typeof url !== \"string\") {\n throw new Error('A valid \"url\" parameter must provided.');\n }\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n #pagesRefCache = new Map();\n\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({\n eventBus,\n externalLinkTarget = null,\n externalLinkRel = null,\n ignoreDestinationZoom = false,\n } = {}) {\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.externalLinkEnabled = true;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n }\n\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this.#pagesRefCache.clear();\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfViewer.pagesRotation;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {\n this.pdfViewer.pagesRotation = value;\n }\n\n #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {\n // Dest array looks like that: <page-ref> </XYZ|/FitXXX> <args..>\n const destRef = explicitDest[0];\n let pageNumber;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument\n .getPageIndex(destRef)\n .then(pageIndex => {\n this.cachePageRef(pageIndex + 1, destRef);\n this.#goToDestinationHelper(rawDest, namedDest, explicitDest);\n })\n .catch(() => {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${rawDest}\".`\n );\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${rawDest}\".`\n );\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${rawDest}\".`\n );\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = await this.pdfDocument.getDestination(dest);\n } else {\n namedDest = null;\n explicitDest = await dest;\n }\n if (!Array.isArray(explicitDest)) {\n console.error(\n `PDFLinkService.goToDestination: \"${explicitDest}\" is not ` +\n `a valid destination array, for dest=\"${dest}\".`\n );\n return;\n }\n this.#goToDestinationHelper(dest, namedDest, explicitDest);\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber =\n (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n\n /**\n * Wrapper around the `addLinkAttributes` helper function.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, {\n url,\n target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\n rel: this.externalLinkRel,\n enabled: this.externalLinkEnabled,\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n } else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in <base href>.\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || \"\") + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: params.get(\"search\").replace(/\"/g, \"\"),\n phraseSearch: params.get(\"phrase\") === \"true\",\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n } else {\n if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n } else if (\n zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\"\n ) {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n } else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".'\n );\n } else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n } else {\n console.error(\n `PDFLinkService.setHash: \"${zoomArg}\" is not a valid zoom value.`\n );\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n } else {\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (\n typeof dest === \"string\" ||\n PDFLinkService.#isValidExplicitDestination(dest)\n ) {\n this.goToDestination(dest);\n return;\n }\n console.error(\n `PDFLinkService.setHash: \"${unescape(\n hash\n )}\" is not a valid destination.`\n );\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n this.pdfHistory?.back();\n break;\n\n case \"GoForward\":\n this.pdfHistory?.forward();\n break;\n\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n\n case \"FirstPage\":\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n this.#pagesRefCache.set(refStr, pageNum);\n }\n\n /**\n * @ignore\n */\n _cachedPageNumber(pageRef) {\n if (!pageRef) {\n return null;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n return this.#pagesRefCache.get(refStr) || null;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return this.pdfViewer.isPageVisible(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return this.pdfViewer.isPageCached(pageNumber);\n }\n\n static #isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n const destLength = dest.length;\n if (destLength < 2) {\n return false;\n }\n const page = dest[0];\n if (\n !(\n typeof page === \"object\" &&\n Number.isInteger(page.num) &&\n Number.isInteger(page.gen)\n ) &&\n !(Number.isInteger(page) && page >= 0)\n ) {\n return false;\n }\n const zoom = dest[1];\n if (!(typeof zoom === \"object\" && typeof zoom.name === \"string\")) {\n return false;\n }\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (destLength !== 5) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return destLength === 2;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (destLength !== 3) {\n return false;\n }\n break;\n case \"FitR\":\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n const param = dest[i];\n if (!(typeof param === \"number\" || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @implements {IPDFLinkService}\n */\nclass SimpleLinkService {\n constructor() {\n this.externalLinkEnabled = true;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {}\n\n /**\n * @type {number}\n */\n get rotation() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {}\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {}\n\n /**\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {}\n\n /**\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, { url, enabled: this.externalLinkEnabled });\n }\n\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return \"#\";\n }\n\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return \"#\";\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return true;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return true;\n }\n}\n\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass OverlayManager {\n #overlays = new WeakMap();\n\n #active = null;\n\n get active() {\n return this.#active;\n }\n\n /**\n * @param {HTMLDialogElement} dialog - The overlay's DOM element.\n * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\n * an active overlay. The default is `false`.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * registered.\n */\n async register(dialog, canForceClose = false) {\n if (typeof dialog !== \"object\") {\n throw new Error(\"Not enough parameters.\");\n } else if (this.#overlays.has(dialog)) {\n throw new Error(\"The overlay is already registered.\");\n }\n this.#overlays.set(dialog, { canForceClose });\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC && !SKIP_BABEL\") &&\n !dialog.showModal\n ) {\n const dialogPolyfill = require(\"dialog-polyfill/dist/dialog-polyfill.js\");\n dialogPolyfill.registerDialog(dialog);\n }\n\n dialog.addEventListener(\"cancel\", evt => {\n this.#active = null;\n });\n }\n\n /**\n * @param {HTMLDialogElement} dialog - The overlay's DOM element.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * unregistered.\n */\n async unregister(dialog) {\n if (!this.#overlays.has(dialog)) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this.#active === dialog) {\n throw new Error(\"The overlay cannot be removed while it is active.\");\n }\n this.#overlays.delete(dialog);\n }\n\n /**\n * @param {HTMLDialogElement} dialog - The overlay's DOM element.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * opened.\n */\n async open(dialog) {\n if (!this.#overlays.has(dialog)) {\n throw new Error(\"The overlay does not exist.\");\n } else if (this.#active) {\n if (this.#active === dialog) {\n throw new Error(\"The overlay is already active.\");\n } else if (this.#overlays.get(dialog).canForceClose) {\n await this.close();\n } else {\n throw new Error(\"Another overlay is currently active.\");\n }\n }\n this.#active = dialog;\n dialog.showModal();\n }\n\n /**\n * @param {HTMLDialogElement} dialog - The overlay's DOM element.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * closed.\n */\n async close(dialog = this.#active) {\n if (!this.#overlays.has(dialog)) {\n throw new Error(\"The overlay does not exist.\");\n } else if (!this.#active) {\n throw new Error(\"The overlay is currently not active.\");\n } else if (this.#active !== dialog) {\n throw new Error(\"Another overlay is currently active.\");\n }\n dialog.close();\n this.#active = null;\n }\n}\n\nexport { OverlayManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PasswordResponses } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PasswordPromptOptions\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\n * @property {HTMLParagraphElement} label - Label containing instructions for\n * entering the password.\n * @property {HTMLInputElement} input - Input field for entering the password.\n * @property {HTMLButtonElement} submitButton - Button for submitting the\n * password.\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\n * entry.\n */\n\nclass PasswordPrompt {\n #updateCallback = null;\n\n #reason = null;\n\n /**\n * @param {PasswordPromptOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\n * an <iframe> or an <object>. The default value is `false`.\n */\n constructor(options, overlayManager, l10n, isViewerEmbedded = false) {\n this.dialog = options.dialog;\n this.label = options.label;\n this.input = options.input;\n this.submitButton = options.submitButton;\n this.cancelButton = options.cancelButton;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n this._isViewerEmbedded = isViewerEmbedded;\n\n // Attach the event listeners.\n this.submitButton.addEventListener(\"click\", this.#verify.bind(this));\n this.cancelButton.addEventListener(\"click\", this.#cancel.bind(this));\n this.input.addEventListener(\"keydown\", e => {\n if (e.keyCode === /* Enter = */ 13) {\n this.#verify();\n }\n });\n\n this.overlayManager.register(this.dialog, /* canForceClose = */ true);\n\n this.dialog.addEventListener(\"close\", this.#cancel.bind(this));\n }\n\n async open() {\n await this.overlayManager.open(this.dialog);\n\n const passwordIncorrect =\n this.#reason === PasswordResponses.INCORRECT_PASSWORD;\n\n if (!this._isViewerEmbedded || passwordIncorrect) {\n this.input.focus();\n }\n this.label.textContent = await this.l10n.get(\n `password_${passwordIncorrect ? \"invalid\" : \"label\"}`\n );\n }\n\n async close() {\n if (this.overlayManager.active === this.dialog) {\n this.overlayManager.close(this.dialog);\n }\n }\n\n #verify() {\n const password = this.input.value;\n if (password?.length > 0) {\n this.#invokeCallback(password);\n }\n }\n\n #cancel() {\n this.#invokeCallback(new Error(\"PasswordPrompt cancelled.\"));\n }\n\n #invokeCallback(password) {\n if (!this.#updateCallback) {\n return; // Ensure that the callback is only invoked once.\n }\n this.close();\n this.input.value = \"\";\n\n this.#updateCallback(password);\n this.#updateCallback = null;\n }\n\n setUpdateCallback(updateCallback, reason) {\n this.#updateCallback = updateCallback;\n this.#reason = reason;\n }\n}\n\nexport { PasswordPrompt };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability, getFilenameFromUrl } from \"pdfjs-lib\";\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\nimport { waitOnEventOrTimeout } from \"./event_utils.js\";\n\n/**\n * @typedef {Object} PDFAttachmentViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {DownloadManager} downloadManager - The download manager.\n */\n\n/**\n * @typedef {Object} PDFAttachmentViewerRenderParameters\n * @property {Object|null} attachments - A lookup table of attachment objects.\n */\n\nclass PDFAttachmentViewer extends BaseTreeViewer {\n /**\n * @param {PDFAttachmentViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.downloadManager = options.downloadManager;\n\n this.eventBus._on(\n \"fileattachmentannotation\",\n this.#appendAttachment.bind(this)\n );\n }\n\n reset(keepRenderedCapability = false) {\n super.reset();\n this._attachments = null;\n\n if (!keepRenderedCapability) {\n // The only situation in which the `_renderedCapability` should *not* be\n // replaced is when appending FileAttachment annotations.\n this._renderedCapability = createPromiseCapability();\n }\n this._pendingDispatchEvent = false;\n }\n\n /**\n * @private\n */\n async _dispatchEvent(attachmentsCount) {\n this._renderedCapability.resolve();\n\n if (attachmentsCount === 0 && !this._pendingDispatchEvent) {\n // Delay the event when no \"regular\" attachments exist, to allow time for\n // parsing of any FileAttachment annotations that may be present on the\n // *initially* rendered page; this reduces the likelihood of temporarily\n // disabling the attachmentsView when the `PDFSidebar` handles the event.\n this._pendingDispatchEvent = true;\n\n await waitOnEventOrTimeout({\n target: this.eventBus,\n name: \"annotationlayerrendered\",\n delay: 1000,\n });\n\n if (!this._pendingDispatchEvent) {\n return; // There was already another `_dispatchEvent`-call`.\n }\n }\n this._pendingDispatchEvent = false;\n\n this.eventBus.dispatch(\"attachmentsloaded\", {\n source: this,\n attachmentsCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { content, filename }) {\n element.onclick = () => {\n this.downloadManager.openOrDownloadData(element, content, filename);\n return false;\n };\n }\n\n /**\n * @param {PDFAttachmentViewerRenderParameters} params\n */\n render({ attachments, keepRenderedCapability = false }) {\n if (this._attachments) {\n this.reset(keepRenderedCapability);\n }\n this._attachments = attachments || null;\n\n if (!attachments) {\n this._dispatchEvent(/* attachmentsCount = */ 0);\n return;\n }\n const names = Object.keys(attachments).sort(function (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n\n const fragment = document.createDocumentFragment();\n let attachmentsCount = 0;\n for (const name of names) {\n const item = attachments[name];\n const content = item.content,\n filename = getFilenameFromUrl(item.filename);\n\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, { content, filename });\n element.textContent = this._normalizeTextContent(filename);\n\n div.appendChild(element);\n\n fragment.appendChild(div);\n attachmentsCount++;\n }\n\n this._finishRendering(fragment, attachmentsCount);\n }\n\n /**\n * Used to append FileAttachment annotations to the sidebar.\n */\n #appendAttachment({ filename, content }) {\n const renderedPromise = this._renderedCapability.promise;\n\n renderedPromise.then(() => {\n if (renderedPromise !== this._renderedCapability.promise) {\n return; // The FileAttachment annotation belongs to a previous document.\n }\n const attachments = this._attachments || Object.create(null);\n\n for (const name in attachments) {\n if (filename === name) {\n return; // Ignore the new attachment if it already exists.\n }\n }\n attachments[filename] = {\n filename,\n content,\n };\n this.render({\n attachments,\n keepRenderedCapability: true,\n });\n });\n }\n}\n\nexport { PDFAttachmentViewer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { removeNullCharacters } from \"./ui_utils.js\";\n\nconst TREEITEM_OFFSET_TOP = -100; // px\nconst TREEITEM_SELECTED_CLASS = \"selected\";\n\nclass BaseTreeViewer {\n constructor(options) {\n if (this.constructor === BaseTreeViewer) {\n throw new Error(\"Cannot initialize BaseTreeViewer.\");\n }\n this.container = options.container;\n this.eventBus = options.eventBus;\n\n this.reset();\n }\n\n reset() {\n this._pdfDocument = null;\n this._lastToggleIsShow = true;\n this._currentTreeItem = null;\n\n // Remove the tree from the DOM.\n this.container.textContent = \"\";\n // Ensure that the left (right in RTL locales) margin is always reset,\n // to prevent incorrect tree alignment if a new document is opened.\n this.container.classList.remove(\"treeWithDeepNesting\");\n }\n\n /**\n * @private\n */\n _dispatchEvent(count) {\n throw new Error(\"Not implemented: _dispatchEvent\");\n }\n\n /**\n * @private\n */\n _bindLink(element, params) {\n throw new Error(\"Not implemented: _bindLink\");\n }\n\n /**\n * @private\n */\n _normalizeTextContent(str) {\n // Chars in range [0x01-0x1F] will be replaced with a white space\n // and 0x00 by \"\".\n return (\n removeNullCharacters(str, /* replaceInvisible */ true) ||\n /* en dash = */ \"\\u2013\"\n );\n }\n\n /**\n * Prepend a button before a tree item which allows the user to collapse or\n * expand all tree items at that level; see `_toggleTreeItem`.\n * @private\n */\n _addToggleButton(div, hidden = false) {\n const toggler = document.createElement(\"div\");\n toggler.className = \"treeItemToggler\";\n if (hidden) {\n toggler.classList.add(\"treeItemsHidden\");\n }\n toggler.onclick = evt => {\n evt.stopPropagation();\n toggler.classList.toggle(\"treeItemsHidden\");\n\n if (evt.shiftKey) {\n const shouldShowAll = !toggler.classList.contains(\"treeItemsHidden\");\n this._toggleTreeItem(div, shouldShowAll);\n }\n };\n div.insertBefore(toggler, div.firstChild);\n }\n\n /**\n * Collapse or expand the subtree of a tree item.\n *\n * @param {Element} root - the root of the item (sub)tree.\n * @param {boolean} show - whether to show the item (sub)tree. If false,\n * the item subtree rooted at `root` will be collapsed.\n * @private\n */\n _toggleTreeItem(root, show = false) {\n this._lastToggleIsShow = show;\n for (const toggler of root.querySelectorAll(\".treeItemToggler\")) {\n toggler.classList.toggle(\"treeItemsHidden\", !show);\n }\n }\n\n /**\n * Collapse or expand all subtrees of the `container`.\n * @private\n */\n _toggleAllTreeItems() {\n this._toggleTreeItem(this.container, !this._lastToggleIsShow);\n }\n\n /**\n * @private\n */\n _finishRendering(fragment, count, hasAnyNesting = false) {\n if (hasAnyNesting) {\n this.container.classList.add(\"treeWithDeepNesting\");\n\n this._lastToggleIsShow = !fragment.querySelector(\".treeItemsHidden\");\n }\n this.container.appendChild(fragment);\n\n this._dispatchEvent(count);\n }\n\n render(params) {\n throw new Error(\"Not implemented: render\");\n }\n\n /**\n * @private\n */\n _updateCurrentTreeItem(treeItem = null) {\n if (this._currentTreeItem) {\n // Ensure that the current treeItem-selection is always removed.\n this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = null;\n }\n if (treeItem) {\n treeItem.classList.add(TREEITEM_SELECTED_CLASS);\n this._currentTreeItem = treeItem;\n }\n }\n\n /**\n * @private\n */\n _scrollToCurrentTreeItem(treeItem) {\n if (!treeItem) {\n return;\n }\n // Ensure that the treeItem is *fully* expanded, such that it will first of\n // all be visible and secondly that scrolling it into view works correctly.\n let currentNode = treeItem.parentNode;\n while (currentNode && currentNode !== this.container) {\n if (currentNode.classList.contains(\"treeItem\")) {\n const toggler = currentNode.firstElementChild;\n toggler?.classList.remove(\"treeItemsHidden\");\n }\n currentNode = currentNode.parentNode;\n }\n this._updateCurrentTreeItem(treeItem);\n\n this.container.scrollTo(\n treeItem.offsetLeft,\n treeItem.offsetTop + TREEITEM_OFFSET_TOP\n );\n }\n}\n\nexport { BaseTreeViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability,\n getPdfFilenameFromUrl,\n PDFDateString,\n} from \"pdfjs-lib\";\nimport { getPageSizeInches, isPortraitOrientation } from \"./ui_utils.js\";\n\nconst DEFAULT_FIELD_CONTENT = \"-\";\n\n// See https://en.wikibooks.org/wiki/Lentis/Conversion_to_the_Metric_Standard_in_the_United_States\nconst NON_METRIC_LOCALES = [\"en-us\", \"en-lr\", \"my\"];\n\n// Should use the format: `width x height`, in portrait orientation.\n// See https://en.wikipedia.org/wiki/Paper_size\nconst US_PAGE_NAMES = {\n \"8.5x11\": \"Letter\",\n \"8.5x14\": \"Legal\",\n};\nconst METRIC_PAGE_NAMES = {\n \"297x420\": \"A3\",\n \"210x297\": \"A4\",\n};\n\nfunction getPageName(size, isPortrait, pageNames) {\n const width = isPortrait ? size.width : size.height;\n const height = isPortrait ? size.height : size.width;\n\n return pageNames[`${width}x${height}`];\n}\n\n/**\n * @typedef {Object} PDFDocumentPropertiesOptions\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\n * @property {Object} fields - Names and elements of the overlay's fields.\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\n */\n\nclass PDFDocumentProperties {\n #fieldData = null;\n\n /**\n * @param {PDFDocumentPropertiesOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor({ dialog, fields, closeButton }, overlayManager, eventBus, l10n) {\n this.dialog = dialog;\n this.fields = fields;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this.#reset();\n // Bind the event listener for the Close button.\n closeButton.addEventListener(\"click\", this.close.bind(this));\n\n this.overlayManager.register(this.dialog);\n\n eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n eventBus._on(\"rotationchanging\", evt => {\n this._pagesRotation = evt.pagesRotation;\n });\n\n this._isNonMetricLocale = true; // The default viewer locale is 'en-us'.\n l10n.getLanguage().then(locale => {\n this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);\n });\n }\n\n /**\n * Open the document properties overlay.\n */\n async open() {\n await Promise.all([\n this.overlayManager.open(this.dialog),\n this._dataAvailableCapability.promise,\n ]);\n const currentPageNumber = this._currentPageNumber;\n const pagesRotation = this._pagesRotation;\n\n // If the document properties were previously fetched (for this PDF file),\n // just update the dialog immediately to avoid redundant lookups.\n if (\n this.#fieldData &&\n currentPageNumber === this.#fieldData._currentPageNumber &&\n pagesRotation === this.#fieldData._pagesRotation\n ) {\n this.#updateUI();\n return;\n }\n\n // Get the document properties.\n const {\n info,\n /* metadata, */\n contentDispositionFilename,\n contentLength,\n } = await this.pdfDocument.getMetadata();\n\n const [\n fileName,\n fileSize,\n creationDate,\n modificationDate,\n pageSize,\n isLinearized,\n ] = await Promise.all([\n contentDispositionFilename || getPdfFilenameFromUrl(this.url),\n this.#parseFileSize(contentLength),\n this.#parseDate(info.CreationDate),\n this.#parseDate(info.ModDate),\n this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\n return this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\n }),\n this.#parseLinearization(info.IsLinearized),\n ]);\n\n this.#fieldData = Object.freeze({\n fileName,\n fileSize,\n title: info.Title,\n author: info.Author,\n subject: info.Subject,\n keywords: info.Keywords,\n creationDate,\n modificationDate,\n creator: info.Creator,\n producer: info.Producer,\n version: info.PDFFormatVersion,\n pageCount: this.pdfDocument.numPages,\n pageSize,\n linearized: isLinearized,\n _currentPageNumber: currentPageNumber,\n _pagesRotation: pagesRotation,\n });\n this.#updateUI();\n\n // Get the correct fileSize, since it may not have been available\n // or could potentially be wrong.\n const { length } = await this.pdfDocument.getDownloadInfo();\n if (contentLength === length) {\n return; // The fileSize has already been correctly set.\n }\n const data = Object.assign(Object.create(null), this.#fieldData);\n data.fileSize = await this.#parseFileSize(length);\n\n this.#fieldData = Object.freeze(data);\n this.#updateUI();\n }\n\n /**\n * Close the document properties overlay.\n */\n async close() {\n this.overlayManager.close(this.dialog);\n }\n\n /**\n * Set a reference to the PDF document and the URL in order\n * to populate the overlay fields with the document properties.\n * Note that the overlay will contain no information if this method\n * is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\n * @param {string} url - The URL of the document.\n */\n setDocument(pdfDocument, url = null) {\n if (this.pdfDocument) {\n this.#reset();\n this.#updateUI(true);\n }\n if (!pdfDocument) {\n return;\n }\n this.pdfDocument = pdfDocument;\n this.url = url;\n\n this._dataAvailableCapability.resolve();\n }\n\n #reset() {\n this.pdfDocument = null;\n this.url = null;\n\n this.#fieldData = null;\n this._dataAvailableCapability = createPromiseCapability();\n this._currentPageNumber = 1;\n this._pagesRotation = 0;\n }\n\n /**\n * Always updates all of the dialog fields, to prevent inconsistent UI state.\n * NOTE: If the contents of a particular field is neither a non-empty string,\n * nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\n */\n #updateUI(reset = false) {\n if (reset || !this.#fieldData) {\n for (const id in this.fields) {\n this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n }\n return;\n }\n if (this.overlayManager.active !== this.dialog) {\n // Don't bother updating the dialog if has already been closed,\n // since it will be updated the next time `this.open` is called.\n return;\n }\n for (const id in this.fields) {\n const content = this.#fieldData[id];\n this.fields[id].textContent =\n content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n }\n }\n\n async #parseFileSize(fileSize = 0) {\n const kb = fileSize / 1024,\n mb = kb / 1024;\n if (!kb) {\n return undefined;\n }\n return this.l10n.get(`document_properties_${mb >= 1 ? \"mb\" : \"kb\"}`, {\n size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\n size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n });\n }\n\n async #parsePageSize(pageSizeInches, pagesRotation) {\n if (!pageSizeInches) {\n return undefined;\n }\n // Take the viewer rotation into account as well; compare with Adobe Reader.\n if (pagesRotation % 180 !== 0) {\n pageSizeInches = {\n width: pageSizeInches.height,\n height: pageSizeInches.width,\n };\n }\n const isPortrait = isPortraitOrientation(pageSizeInches);\n\n let sizeInches = {\n width: Math.round(pageSizeInches.width * 100) / 100,\n height: Math.round(pageSizeInches.height * 100) / 100,\n };\n // 1in == 25.4mm; no need to round to 2 decimals for millimeters.\n let sizeMillimeters = {\n width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,\n height: Math.round(pageSizeInches.height * 25.4 * 10) / 10,\n };\n\n let rawName =\n getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\n getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n\n if (\n !rawName &&\n !(\n Number.isInteger(sizeMillimeters.width) &&\n Number.isInteger(sizeMillimeters.height)\n )\n ) {\n // Attempt to improve the page name detection by falling back to fuzzy\n // matching of the metric dimensions, to account for e.g. rounding errors\n // and/or PDF files that define the page sizes in an imprecise manner.\n const exactMillimeters = {\n width: pageSizeInches.width * 25.4,\n height: pageSizeInches.height * 25.4,\n };\n const intMillimeters = {\n width: Math.round(sizeMillimeters.width),\n height: Math.round(sizeMillimeters.height),\n };\n\n // Try to avoid false positives, by only considering \"small\" differences.\n if (\n Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 &&\n Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1\n ) {\n rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n if (rawName) {\n // Update *both* sizes, computed above, to ensure that the displayed\n // dimensions always correspond to the detected page name.\n sizeInches = {\n width: Math.round((intMillimeters.width / 25.4) * 100) / 100,\n height: Math.round((intMillimeters.height / 25.4) * 100) / 100,\n };\n sizeMillimeters = intMillimeters;\n }\n }\n }\n\n const [{ width, height }, unit, name, orientation] = await Promise.all([\n this._isNonMetricLocale ? sizeInches : sizeMillimeters,\n this.l10n.get(\n `document_properties_page_size_unit_${\n this._isNonMetricLocale ? \"inches\" : \"millimeters\"\n }`\n ),\n rawName &&\n this.l10n.get(\n `document_properties_page_size_name_${rawName.toLowerCase()}`\n ),\n this.l10n.get(\n `document_properties_page_size_orientation_${\n isPortrait ? \"portrait\" : \"landscape\"\n }`\n ),\n ]);\n\n return this.l10n.get(\n `document_properties_page_size_dimension_${name ? \"name_\" : \"\"}string`,\n {\n width: width.toLocaleString(),\n height: height.toLocaleString(),\n unit,\n name,\n orientation,\n }\n );\n }\n\n async #parseDate(inputDate) {\n const dateObject = PDFDateString.toDateObject(inputDate);\n if (!dateObject) {\n return undefined;\n }\n return this.l10n.get(\"document_properties_date_string\", {\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n }\n\n #parseLinearization(isLinearized) {\n return this.l10n.get(\n `document_properties_linearized_${isLinearized ? \"yes\" : \"no\"}`\n );\n }\n}\n\nexport { PDFDocumentProperties };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FindState } from \"./pdf_find_controller.js\";\n\nconst MATCHES_COUNT_LIMIT = 1000;\n\n/**\n * Creates a \"search bar\" given a set of DOM elements that act as controls\n * for searching or for setting search preferences in the UI. This object\n * also sets up the appropriate events for the controls. Actual searching\n * is done by PDFFindController.\n */\nclass PDFFindBar {\n constructor(options, eventBus, l10n) {\n this.opened = false;\n\n this.bar = options.bar;\n this.toggleButton = options.toggleButton;\n this.findField = options.findField;\n this.highlightAll = options.highlightAllCheckbox;\n this.caseSensitive = options.caseSensitiveCheckbox;\n this.matchDiacritics = options.matchDiacriticsCheckbox;\n this.entireWord = options.entireWordCheckbox;\n this.findMsg = options.findMsg;\n this.findResultsCount = options.findResultsCount;\n this.findPreviousButton = options.findPreviousButton;\n this.findNextButton = options.findNextButton;\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n // Add event listeners to the DOM elements.\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n this.findField.addEventListener(\"input\", () => {\n this.dispatchEvent(\"\");\n });\n\n this.bar.addEventListener(\"keydown\", e => {\n switch (e.keyCode) {\n case 13: // Enter\n if (e.target === this.findField) {\n this.dispatchEvent(\"again\", e.shiftKey);\n }\n break;\n case 27: // Escape\n this.close();\n break;\n }\n });\n\n this.findPreviousButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", true);\n });\n\n this.findNextButton.addEventListener(\"click\", () => {\n this.dispatchEvent(\"again\", false);\n });\n\n this.highlightAll.addEventListener(\"click\", () => {\n this.dispatchEvent(\"highlightallchange\");\n });\n\n this.caseSensitive.addEventListener(\"click\", () => {\n this.dispatchEvent(\"casesensitivitychange\");\n });\n\n this.entireWord.addEventListener(\"click\", () => {\n this.dispatchEvent(\"entirewordchange\");\n });\n\n this.matchDiacritics.addEventListener(\"click\", () => {\n this.dispatchEvent(\"diacriticmatchingchange\");\n });\n\n this.eventBus._on(\"resize\", this.#adjustWidth.bind(this));\n }\n\n reset() {\n this.updateUIState();\n }\n\n dispatchEvent(type, findPrev = false) {\n this.eventBus.dispatch(\"find\", {\n source: this,\n type,\n query: this.findField.value,\n phraseSearch: true,\n caseSensitive: this.caseSensitive.checked,\n entireWord: this.entireWord.checked,\n highlightAll: this.highlightAll.checked,\n findPrevious: findPrev,\n matchDiacritics: this.matchDiacritics.checked,\n });\n }\n\n updateUIState(state, previous, matchesCount) {\n let findMsg = Promise.resolve(\"\");\n let status = \"\";\n\n switch (state) {\n case FindState.FOUND:\n break;\n case FindState.PENDING:\n status = \"pending\";\n break;\n case FindState.NOT_FOUND:\n findMsg = this.l10n.get(\"find_not_found\");\n status = \"notFound\";\n break;\n case FindState.WRAPPED:\n findMsg = this.l10n.get(`find_reached_${previous ? \"top\" : \"bottom\"}`);\n break;\n }\n this.findField.setAttribute(\"data-status\", status);\n this.findField.setAttribute(\"aria-invalid\", state === FindState.NOT_FOUND);\n\n findMsg.then(msg => {\n this.findMsg.textContent = msg;\n this.#adjustWidth();\n });\n\n this.updateResultsCount(matchesCount);\n }\n\n updateResultsCount({ current = 0, total = 0 } = {}) {\n const limit = MATCHES_COUNT_LIMIT;\n let matchCountMsg = Promise.resolve(\"\");\n\n if (total > 0) {\n if (total > limit) {\n let key = \"find_match_count_limit\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { limit });\n } else {\n let key = \"find_match_count\";\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // TODO: Remove this hard-coded `[other]` form once plural support has\n // been implemented in the mozilla-central specific `l10n.js` file.\n key += \"[other]\";\n }\n matchCountMsg = this.l10n.get(key, { current, total });\n }\n }\n matchCountMsg.then(msg => {\n this.findResultsCount.textContent = msg;\n // Since `updateResultsCount` may be called from `PDFFindController`,\n // ensure that the width of the findbar is always updated correctly.\n this.#adjustWidth();\n });\n }\n\n open() {\n if (!this.opened) {\n this.opened = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.bar.classList.remove(\"hidden\");\n }\n this.findField.select();\n this.findField.focus();\n\n this.#adjustWidth();\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n this.bar.classList.add(\"hidden\");\n\n this.eventBus.dispatch(\"findbarclose\", { source: this });\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n #adjustWidth() {\n if (!this.opened) {\n return;\n }\n\n // The find bar has an absolute position and thus the browser extends\n // its width to the maximum possible width once the find bar does not fit\n // entirely within the window anymore (and its elements are automatically\n // wrapped). Here we detect and fix that.\n this.bar.classList.remove(\"wrapContainers\");\n\n const findbarHeight = this.bar.clientHeight;\n const inputContainerHeight = this.bar.firstElementChild.clientHeight;\n\n if (findbarHeight > inputContainerHeight) {\n // The findbar is taller than the input container, which means that\n // the browser wrapped some of the elements. For a consistent look,\n // wrap all of them to adjust the width of the find bar.\n this.bar.classList.add(\"wrapContainers\");\n }\n }\n}\n\nexport { PDFFindBar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { binarySearchFirstItem, scrollIntoView } from \"./ui_utils.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { getCharacterType } from \"./pdf_find_utils.js\";\n\nconst FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3,\n};\n\nconst FIND_TIMEOUT = 250; // ms\nconst MATCH_SCROLL_OFFSET_TOP = -50; // px\nconst MATCH_SCROLL_OFFSET_LEFT = -400; // px\n\nconst CHARACTERS_TO_NORMALIZE = {\n \"\\u2010\": \"-\", // Hyphen\n \"\\u2018\": \"'\", // Left single quotation mark\n \"\\u2019\": \"'\", // Right single quotation mark\n \"\\u201A\": \"'\", // Single low-9 quotation mark\n \"\\u201B\": \"'\", // Single high-reversed-9 quotation mark\n \"\\u201C\": '\"', // Left double quotation mark\n \"\\u201D\": '\"', // Right double quotation mark\n \"\\u201E\": '\"', // Double low-9 quotation mark\n \"\\u201F\": '\"', // Double high-reversed-9 quotation mark\n \"\\u00BC\": \"1/4\", // Vulgar fraction one quarter\n \"\\u00BD\": \"1/2\", // Vulgar fraction one half\n \"\\u00BE\": \"3/4\", // Vulgar fraction three quarters\n};\n\n// These diacritics aren't considered as combining diacritics\n// when searching in a document:\n// https://searchfox.org/mozilla-central/source/intl/unicharutil/util/is_combining_diacritic.py.\n// The combining class definitions can be found:\n// https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values\n// Category 0 corresponds to [^\\p{Mn}].\nconst DIACRITICS_EXCEPTION = new Set([\n // UNICODE_COMBINING_CLASS_KANA_VOICING\n // https://www.compart.com/fr/unicode/combining/8\n 0x3099, 0x309a,\n // UNICODE_COMBINING_CLASS_VIRAMA (under 0xFFFF)\n // https://www.compart.com/fr/unicode/combining/9\n 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b,\n 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714,\n 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f,\n 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed,\n // 91\n // https://www.compart.com/fr/unicode/combining/91\n 0x0c56,\n // 129\n // https://www.compart.com/fr/unicode/combining/129\n 0x0f71,\n // 130\n // https://www.compart.com/fr/unicode/combining/130\n 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80,\n // 132\n // https://www.compart.com/fr/unicode/combining/132\n 0x0f74,\n]);\nconst DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()]\n .map(x => String.fromCharCode(x))\n .join(\"\");\n\nconst DIACRITICS_REG_EXP = /\\p{M}+/gu;\nconst SPECIAL_CHARS_REG_EXP =\n /([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})/gu;\nconst NOT_DIACRITIC_FROM_END_REG_EXP = /([^\\p{M}])\\p{M}*$/u;\nconst NOT_DIACRITIC_FROM_START_REG_EXP = /^\\p{M}*([^\\p{M}])/u;\n\nlet normalizationRegex = null;\nfunction normalize(text) {\n // The diacritics in the text or in the query can be composed or not.\n // So we use a decomposed text using NFD (and the same for the query)\n // in order to be sure that diacritics are in the same order.\n\n if (!normalizationRegex) {\n // Compile the regular expression for text normalization once.\n const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\"\");\n normalizationRegex = new RegExp(\n `([${replace}])|(\\\\p{M}+(?:-\\\\n)?)|(\\\\S-\\\\n)|(\\\\n)`,\n \"gum\"\n );\n }\n\n // The goal of this function is to normalize the string and\n // be able to get from an index in the new string the\n // corresponding index in the old string.\n // For example if we have: abCd12ef456gh where C is replaced by ccc\n // and numbers replaced by nothing (it's the case for diacritics), then\n // we'll obtain the normalized string: abcccdefgh.\n // So here the reverse map is: [0,1,2,2,2,3,6,7,11,12].\n\n // The goal is to obtain the array: [[0, 0], [3, -1], [4, -2],\n // [6, 0], [8, 3]].\n // which can be used like this:\n // - let say that i is the index in new string and j the index\n // the old string.\n // - if i is in [0; 3[ then j = i + 0\n // - if i is in [3; 4[ then j = i - 1\n // - if i is in [4; 6[ then j = i - 2\n // ...\n // Thanks to a binary search it's easy to know where is i and what's the\n // shift.\n // Let say that the last entry in the array is [x, s] and we have a\n // substitution at index y (old string) which will replace o chars by n chars.\n // Firstly, if o === n, then no need to add a new entry: the shift is\n // the same.\n // Secondly, if o < n, then we push the n - o elements:\n // [y - (s - 1), s - 1], [y - (s - 2), s - 2], ...\n // Thirdly, if o > n, then we push the element: [y - (s - n), o + s - n]\n\n // Collect diacritics length and positions.\n const rawDiacriticsPositions = [];\n let m;\n while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {\n rawDiacriticsPositions.push([m[0].length, m.index]);\n }\n\n let normalized = text.normalize(\"NFD\");\n const positions = [[0, 0]];\n let k = 0;\n let shift = 0;\n let shiftOrigin = 0;\n let eol = 0;\n let hasDiacritics = false;\n\n normalized = normalized.replace(\n normalizationRegex,\n (match, p1, p2, p3, p4, i) => {\n i -= shiftOrigin;\n if (p1) {\n // Maybe fractions or quotations mark...\n const replacement = CHARACTERS_TO_NORMALIZE[match];\n const jj = replacement.length;\n for (let j = 1; j < jj; j++) {\n positions.push([i - shift + j, shift - j]);\n }\n shift -= jj - 1;\n return replacement;\n }\n\n if (p2) {\n const hasTrailingDashEOL = p2.endsWith(\"\\n\");\n const len = hasTrailingDashEOL ? p2.length - 2 : p2.length;\n\n // Diacritics.\n hasDiacritics = true;\n let jj = len;\n if (i + eol === rawDiacriticsPositions[k]?.[1]) {\n jj -= rawDiacriticsPositions[k][0];\n ++k;\n }\n\n for (let j = 1; j < jj + 1; j++) {\n // i is the position of the first diacritic\n // so (i - 1) is the position for the letter before.\n positions.push([i - 1 - shift + j, shift - j]);\n }\n shift -= jj;\n shiftOrigin += jj;\n\n if (hasTrailingDashEOL) {\n // Diacritics are followed by a -\\n.\n // See comments in `if (p3)` block.\n i += len - 1;\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p2.slice(0, len);\n }\n\n return p2;\n }\n\n if (p3) {\n // \"X-\\n\" is removed because an hyphen at the end of a line\n // with not a space before is likely here to mark a break\n // in a word.\n // The \\n isn't in the original text so here y = i, n = 1 and o = 2.\n positions.push([i - shift + 1, 1 + shift]);\n shift += 1;\n shiftOrigin += 1;\n eol += 1;\n return p3.charAt(0);\n }\n\n // p4\n // eol is replaced by space: \"foo\\nbar\" is likely equivalent to\n // \"foo bar\".\n positions.push([i - shift + 1, shift - 1]);\n shift -= 1;\n shiftOrigin += 1;\n eol += 1;\n return \" \";\n }\n );\n\n positions.push([normalized.length, shift]);\n\n return [normalized, positions, hasDiacritics];\n}\n\n// Determine the original, non-normalized, match index such that highlighting of\n// search results is correct in the `textLayer` for strings containing e.g. \"½\"\n// characters; essentially \"inverting\" the result of the `normalize` function.\nfunction getOriginalIndex(diffs, pos, len) {\n if (!diffs) {\n return [pos, len];\n }\n\n const start = pos;\n const end = pos + len;\n let i = binarySearchFirstItem(diffs, x => x[0] >= start);\n if (diffs[i][0] > start) {\n --i;\n }\n\n let j = binarySearchFirstItem(diffs, x => x[0] >= end, i);\n if (diffs[j][0] > end) {\n --j;\n }\n\n return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];\n}\n\n/**\n * @typedef {Object} PDFFindControllerOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * Provides search functionality to find a given string in a PDF document.\n */\nclass PDFFindController {\n /**\n * @param {PDFFindControllerOptions} options\n */\n constructor({ linkService, eventBus }) {\n this._linkService = linkService;\n this._eventBus = eventBus;\n\n this.#reset();\n eventBus._on(\"find\", this.#onFind.bind(this));\n eventBus._on(\"findbarclose\", this.#onFindBarClose.bind(this));\n }\n\n get highlightMatches() {\n return this._highlightMatches;\n }\n\n get pageMatches() {\n return this._pageMatches;\n }\n\n get pageMatchesLength() {\n return this._pageMatchesLength;\n }\n\n get selected() {\n return this._selected;\n }\n\n get state() {\n return this._state;\n }\n\n /**\n * Set a reference to the PDF document in order to search it.\n * Note that searching is not possible if this method is not called.\n *\n * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\n */\n setDocument(pdfDocument) {\n if (this._pdfDocument) {\n this.#reset();\n }\n if (!pdfDocument) {\n return;\n }\n this._pdfDocument = pdfDocument;\n this._firstPageCapability.resolve();\n }\n\n #onFind(state) {\n if (!state) {\n return;\n }\n const pdfDocument = this._pdfDocument;\n const { type } = state;\n\n if (this._state === null || this.#shouldDirtyMatch(state)) {\n this._dirtyMatch = true;\n }\n this._state = state;\n if (type !== \"highlightallchange\") {\n this.#updateUIState(FindState.PENDING);\n }\n\n this._firstPageCapability.promise.then(() => {\n // If the document was closed before searching began, or if the search\n // operation was relevant for a previously opened document, do nothing.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n this.#extractText();\n\n const findbarClosed = !this._highlightMatches;\n const pendingTimeout = !!this._findTimeout;\n\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n if (!type) {\n // Trigger the find action with a small delay to avoid starting the\n // search when the user is still typing (saving resources).\n this._findTimeout = setTimeout(() => {\n this.#nextMatch();\n this._findTimeout = null;\n }, FIND_TIMEOUT);\n } else if (this._dirtyMatch) {\n // Immediately trigger searching for non-'find' operations, when the\n // current state needs to be reset and matches re-calculated.\n this.#nextMatch();\n } else if (type === \"again\") {\n this.#nextMatch();\n\n // When the findbar was previously closed, and `highlightAll` is set,\n // ensure that the matches on all active pages are highlighted again.\n if (findbarClosed && this._state.highlightAll) {\n this.#updateAllPages();\n }\n } else if (type === \"highlightallchange\") {\n // If there was a pending search operation, synchronously trigger a new\n // search *first* to ensure that the correct matches are highlighted.\n if (pendingTimeout) {\n this.#nextMatch();\n } else {\n this._highlightMatches = true;\n }\n this.#updateAllPages(); // Update the highlighting on all active pages.\n } else {\n this.#nextMatch();\n }\n });\n }\n\n scrollMatchIntoView({\n element = null,\n selectedLeft = 0,\n pageIndex = -1,\n matchIndex = -1,\n }) {\n if (!this._scrollMatches || !element) {\n return;\n } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\n return;\n } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\n return;\n }\n this._scrollMatches = false; // Ensure that scrolling only happens once.\n\n const spot = {\n top: MATCH_SCROLL_OFFSET_TOP,\n left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\n };\n scrollIntoView(element, spot, /* scrollMatches = */ true);\n }\n\n #reset() {\n this._highlightMatches = false;\n this._scrollMatches = false;\n this._pdfDocument = null;\n this._pageMatches = [];\n this._pageMatchesLength = [];\n this._state = null;\n // Currently selected match.\n this._selected = {\n pageIdx: -1,\n matchIdx: -1,\n };\n // Where the find algorithm currently is in the document.\n this._offset = {\n pageIdx: null,\n matchIdx: null,\n wrapped: false,\n };\n this._extractTextPromises = [];\n this._pageContents = []; // Stores the normalized text for each page.\n this._pageDiffs = [];\n this._hasDiacritics = [];\n this._matchesCountTotal = 0;\n this._pagesToSearch = null;\n this._pendingFindMatches = new Set();\n this._resumePageIdx = null;\n this._dirtyMatch = false;\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n\n this._firstPageCapability = createPromiseCapability();\n }\n\n /**\n * @type {string} The (current) normalized search query.\n */\n get #query() {\n if (this._state.query !== this._rawQuery) {\n this._rawQuery = this._state.query;\n [this._normalizedQuery] = normalize(this._state.query);\n }\n return this._normalizedQuery;\n }\n\n #shouldDirtyMatch(state) {\n // When the search query changes, regardless of the actual search command\n // used, always re-calculate matches to avoid errors (fixes bug 1030622).\n if (state.query !== this._state.query) {\n return true;\n }\n switch (state.type) {\n case \"again\":\n const pageNumber = this._selected.pageIdx + 1;\n const linkService = this._linkService;\n // Only treat a 'findagain' event as a new search operation when it's\n // *absolutely* certain that the currently selected match is no longer\n // visible, e.g. as a result of the user scrolling in the document.\n //\n // NOTE: If only a simple `this._linkService.page` check was used here,\n // there's a risk that consecutive 'findagain' operations could \"skip\"\n // over matches at the top/bottom of pages thus making them completely\n // inaccessible when there's multiple pages visible in the viewer.\n if (\n pageNumber >= 1 &&\n pageNumber <= linkService.pagesCount &&\n pageNumber !== linkService.page &&\n !linkService.isPageVisible(pageNumber)\n ) {\n return true;\n }\n return false;\n case \"highlightallchange\":\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the search query constitutes a \"whole word\", by comparing the\n * first/last character type with the preceding/following character type.\n */\n #isEntireWord(content, startIdx, length) {\n let match = content\n .slice(0, startIdx)\n .match(NOT_DIACRITIC_FROM_END_REG_EXP);\n if (match) {\n const first = content.charCodeAt(startIdx);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(first) === getCharacterType(limit)) {\n return false;\n }\n }\n\n match = content\n .slice(startIdx + length)\n .match(NOT_DIACRITIC_FROM_START_REG_EXP);\n if (match) {\n const last = content.charCodeAt(startIdx + length - 1);\n const limit = match[1].charCodeAt(0);\n if (getCharacterType(last) === getCharacterType(limit)) {\n return false;\n }\n }\n\n return true;\n }\n\n #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {\n const matches = [],\n matchesLength = [];\n\n const diffs = this._pageDiffs[pageIndex];\n let match;\n while ((match = query.exec(pageContent)) !== null) {\n if (\n entireWord &&\n !this.#isEntireWord(pageContent, match.index, match[0].length)\n ) {\n continue;\n }\n\n const [matchPos, matchLen] = getOriginalIndex(\n diffs,\n match.index,\n match[0].length\n );\n\n if (matchLen) {\n matches.push(matchPos);\n matchesLength.push(matchLen);\n }\n }\n this._pageMatches[pageIndex] = matches;\n this._pageMatchesLength[pageIndex] = matchesLength;\n }\n\n #convertToRegExpString(query, hasDiacritics) {\n const { matchDiacritics } = this._state;\n let isUnicode = false;\n query = query.replace(\n SPECIAL_CHARS_REG_EXP,\n (\n match,\n p1 /* to escape */,\n p2 /* punctuation */,\n p3 /* whitespaces */,\n p4 /* diacritics */,\n p5 /* letters */\n ) => {\n // We don't need to use a \\s for whitespaces since all the different\n // kind of whitespaces are replaced by a single \" \".\n\n if (p1) {\n // Escape characters like *+?... to not interfer with regexp syntax.\n return `[ ]*\\\\${p1}[ ]*`;\n }\n if (p2) {\n // Allow whitespaces around punctuation signs.\n return `[ ]*${p2}[ ]*`;\n }\n if (p3) {\n // Replace spaces by \\s+ to be sure to match any spaces.\n return \"[ ]+\";\n }\n if (matchDiacritics) {\n return p4 || p5;\n }\n\n if (p4) {\n // Diacritics are removed with few exceptions.\n return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : \"\";\n }\n\n // A letter has been matched and it can be followed by any diacritics\n // in normalized text.\n if (hasDiacritics) {\n isUnicode = true;\n return `${p5}\\\\p{M}*`;\n }\n return p5;\n }\n );\n\n const trailingSpaces = \"[ ]*\";\n if (query.endsWith(trailingSpaces)) {\n // The [ ]* has been added in order to help to match \"foo . bar\" but\n // it doesn't make sense to match some whitespaces after the dot\n // when it's the last character.\n query = query.slice(0, query.length - trailingSpaces.length);\n }\n\n if (matchDiacritics) {\n // aX must not match aXY.\n if (hasDiacritics) {\n isUnicode = true;\n query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\\\p{M}]|$)`;\n }\n }\n\n return [isUnicode, query];\n }\n\n #calculateMatch(pageIndex) {\n let query = this.#query;\n if (query.length === 0) {\n // Do nothing: the matches should be wiped out already.\n return;\n }\n\n const { caseSensitive, entireWord, phraseSearch } = this._state;\n const pageContent = this._pageContents[pageIndex];\n const hasDiacritics = this._hasDiacritics[pageIndex];\n\n let isUnicode = false;\n if (phraseSearch) {\n [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);\n } else {\n // Words are sorted in reverse order to be sure that \"foobar\" is matched\n // before \"foo\" in case the query is \"foobar foo\".\n const match = query.match(/\\S+/g);\n if (match) {\n query = match\n .sort()\n .reverse()\n .map(q => {\n const [isUnicodePart, queryPart] = this.#convertToRegExpString(\n q,\n hasDiacritics\n );\n isUnicode ||= isUnicodePart;\n return `(${queryPart})`;\n })\n .join(\"|\");\n }\n }\n\n const flags = `g${isUnicode ? \"u\" : \"\"}${caseSensitive ? \"\" : \"i\"}`;\n query = new RegExp(query, flags);\n\n this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);\n\n // When `highlightAll` is set, ensure that the matches on previously\n // rendered (and still active) pages are correctly highlighted.\n if (this._state.highlightAll) {\n this.#updatePage(pageIndex);\n }\n if (this._resumePageIdx === pageIndex) {\n this._resumePageIdx = null;\n this.#nextPageMatch();\n }\n\n // Update the match count.\n const pageMatchesCount = this._pageMatches[pageIndex].length;\n if (pageMatchesCount > 0) {\n this._matchesCountTotal += pageMatchesCount;\n this.#updateUIResultsCount();\n }\n }\n\n #extractText() {\n // Perform text extraction once if this method is called multiple times.\n if (this._extractTextPromises.length > 0) {\n return;\n }\n\n let promise = Promise.resolve();\n for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n const extractTextCapability = createPromiseCapability();\n this._extractTextPromises[i] = extractTextCapability.promise;\n\n promise = promise.then(() => {\n return this._pdfDocument\n .getPage(i + 1)\n .then(pdfPage => {\n return pdfPage.getTextContent();\n })\n .then(\n textContent => {\n const strBuf = [];\n\n for (const textItem of textContent.items) {\n strBuf.push(textItem.str);\n if (textItem.hasEOL) {\n strBuf.push(\"\\n\");\n }\n }\n\n // Store the normalized page content (text items) as one string.\n [\n this._pageContents[i],\n this._pageDiffs[i],\n this._hasDiacritics[i],\n ] = normalize(strBuf.join(\"\"));\n extractTextCapability.resolve();\n },\n reason => {\n console.error(\n `Unable to get text content for page ${i + 1}`,\n reason\n );\n // Page error -- assuming no text content.\n this._pageContents[i] = \"\";\n this._pageDiffs[i] = null;\n this._hasDiacritics[i] = false;\n extractTextCapability.resolve();\n }\n );\n });\n }\n }\n\n #updatePage(index) {\n if (this._scrollMatches && this._selected.pageIdx === index) {\n // If the page is selected, scroll the page into view, which triggers\n // rendering the page, which adds the text layer. Once the text layer\n // is built, it will attempt to scroll the selected match into view.\n this._linkService.page = index + 1;\n }\n\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: index,\n });\n }\n\n #updateAllPages() {\n this._eventBus.dispatch(\"updatetextlayermatches\", {\n source: this,\n pageIndex: -1,\n });\n }\n\n #nextMatch() {\n const previous = this._state.findPrevious;\n const currentPageIndex = this._linkService.page - 1;\n const numPages = this._linkService.pagesCount;\n\n this._highlightMatches = true;\n\n if (this._dirtyMatch) {\n // Need to recalculate the matches, reset everything.\n this._dirtyMatch = false;\n this._selected.pageIdx = this._selected.matchIdx = -1;\n this._offset.pageIdx = currentPageIndex;\n this._offset.matchIdx = null;\n this._offset.wrapped = false;\n this._resumePageIdx = null;\n this._pageMatches.length = 0;\n this._pageMatchesLength.length = 0;\n this._matchesCountTotal = 0;\n\n this.#updateAllPages(); // Wipe out any previously highlighted matches.\n\n for (let i = 0; i < numPages; i++) {\n // Start finding the matches as soon as the text is extracted.\n if (this._pendingFindMatches.has(i)) {\n continue;\n }\n this._pendingFindMatches.add(i);\n this._extractTextPromises[i].then(() => {\n this._pendingFindMatches.delete(i);\n this.#calculateMatch(i);\n });\n }\n }\n\n // If there's no query there's no point in searching.\n if (this.#query === \"\") {\n this.#updateUIState(FindState.FOUND);\n return;\n }\n // If we're waiting on a page, we return since we can't do anything else.\n if (this._resumePageIdx) {\n return;\n }\n\n const offset = this._offset;\n // Keep track of how many pages we should maximally iterate through.\n this._pagesToSearch = numPages;\n // If there's already a `matchIdx` that means we are iterating through a\n // page's matches.\n if (offset.matchIdx !== null) {\n const numPageMatches = this._pageMatches[offset.pageIdx].length;\n if (\n (!previous && offset.matchIdx + 1 < numPageMatches) ||\n (previous && offset.matchIdx > 0)\n ) {\n // The simple case; we just have advance the matchIdx to select\n // the next match on the page.\n offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n this.#updateMatch(/* found = */ true);\n return;\n }\n // We went beyond the current page's matches, so we advance to\n // the next page.\n this.#advanceOffsetPage(previous);\n }\n // Start searching through the page.\n this.#nextPageMatch();\n }\n\n #matchesReady(matches) {\n const offset = this._offset;\n const numMatches = matches.length;\n const previous = this._state.findPrevious;\n\n if (numMatches) {\n // There were matches for the page, so initialize `matchIdx`.\n offset.matchIdx = previous ? numMatches - 1 : 0;\n this.#updateMatch(/* found = */ true);\n return true;\n }\n // No matches, so attempt to search the next page.\n this.#advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this._pagesToSearch < 0) {\n // No point in wrapping again, there were no matches.\n this.#updateMatch(/* found = */ false);\n // While matches were not found, searching for a page\n // with matches should nevertheless halt.\n return true;\n }\n }\n // Matches were not found (and searching is not done).\n return false;\n }\n\n #nextPageMatch() {\n if (this._resumePageIdx !== null) {\n console.error(\"There can only be one pending page.\");\n }\n\n let matches = null;\n do {\n const pageIdx = this._offset.pageIdx;\n matches = this._pageMatches[pageIdx];\n if (!matches) {\n // The matches don't exist yet for processing by `_matchesReady`,\n // so set a resume point for when they do exist.\n this._resumePageIdx = pageIdx;\n break;\n }\n } while (!this.#matchesReady(matches));\n }\n\n #advanceOffsetPage(previous) {\n const offset = this._offset;\n const numPages = this._linkService.pagesCount;\n offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n offset.matchIdx = null;\n\n this._pagesToSearch--;\n\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = previous ? numPages - 1 : 0;\n offset.wrapped = true;\n }\n }\n\n #updateMatch(found = false) {\n let state = FindState.NOT_FOUND;\n const wrapped = this._offset.wrapped;\n this._offset.wrapped = false;\n\n if (found) {\n const previousPage = this._selected.pageIdx;\n this._selected.pageIdx = this._offset.pageIdx;\n this._selected.matchIdx = this._offset.matchIdx;\n state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n\n // Update the currently selected page to wipe out any selected matches.\n if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n this.#updatePage(previousPage);\n }\n }\n\n this.#updateUIState(state, this._state.findPrevious);\n if (this._selected.pageIdx !== -1) {\n // Ensure that the match will be scrolled into view.\n this._scrollMatches = true;\n\n this.#updatePage(this._selected.pageIdx);\n }\n }\n\n #onFindBarClose(evt) {\n const pdfDocument = this._pdfDocument;\n // Since searching is asynchronous, ensure that the removal of highlighted\n // matches (from the UI) is async too such that the 'updatetextlayermatches'\n // events will always be dispatched in the expected order.\n this._firstPageCapability.promise.then(() => {\n // Only update the UI if the document is open, and is the current one.\n if (\n !this._pdfDocument ||\n (pdfDocument && this._pdfDocument !== pdfDocument)\n ) {\n return;\n }\n // Ensure that a pending, not yet started, search operation is aborted.\n if (this._findTimeout) {\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n }\n // Abort any long running searches, to avoid a match being scrolled into\n // view *after* the findbar has been closed. In this case `this._offset`\n // will most likely differ from `this._selected`, hence we also ensure\n // that any new search operation will always start with a clean slate.\n if (this._resumePageIdx) {\n this._resumePageIdx = null;\n this._dirtyMatch = true;\n }\n // Avoid the UI being in a pending state when the findbar is re-opened.\n this.#updateUIState(FindState.FOUND);\n\n this._highlightMatches = false;\n this.#updateAllPages(); // Wipe out any previously highlighted matches.\n });\n }\n\n #requestMatchesCount() {\n const { pageIdx, matchIdx } = this._selected;\n let current = 0,\n total = this._matchesCountTotal;\n if (matchIdx !== -1) {\n for (let i = 0; i < pageIdx; i++) {\n current += this._pageMatches[i]?.length || 0;\n }\n current += matchIdx + 1;\n }\n // When searching starts, this method may be called before the `pageMatches`\n // have been counted (in `_calculateMatch`). Ensure that the UI won't show\n // temporarily broken state when the active find result doesn't make sense.\n if (current < 1 || current > total) {\n current = total = 0;\n }\n return { current, total };\n }\n\n #updateUIResultsCount() {\n this._eventBus.dispatch(\"updatefindmatchescount\", {\n source: this,\n matchesCount: this.#requestMatchesCount(),\n });\n }\n\n #updateUIState(state, previous = false) {\n this._eventBus.dispatch(\"updatefindcontrolstate\", {\n source: this,\n state,\n previous,\n matchesCount: this.#requestMatchesCount(),\n rawQuery: this._state?.query ?? null,\n });\n }\n}\n\nexport { FindState, PDFFindController };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CharacterType = {\n SPACE: 0,\n ALPHA_LETTER: 1,\n PUNCT: 2,\n HAN_LETTER: 3,\n KATAKANA_LETTER: 4,\n HIRAGANA_LETTER: 5,\n HALFWIDTH_KATAKANA_LETTER: 6,\n THAI_LETTER: 7,\n};\n\nfunction isAlphabeticalScript(charCode) {\n return charCode < 0x2e80;\n}\n\nfunction isAscii(charCode) {\n return (charCode & 0xff80) === 0;\n}\n\nfunction isAsciiAlpha(charCode) {\n return (\n (charCode >= /* a = */ 0x61 && charCode <= /* z = */ 0x7a) ||\n (charCode >= /* A = */ 0x41 && charCode <= /* Z = */ 0x5a)\n );\n}\n\nfunction isAsciiDigit(charCode) {\n return charCode >= /* 0 = */ 0x30 && charCode <= /* 9 = */ 0x39;\n}\n\nfunction isAsciiSpace(charCode) {\n return (\n charCode === /* SPACE = */ 0x20 ||\n charCode === /* TAB = */ 0x09 ||\n charCode === /* CR = */ 0x0d ||\n charCode === /* LF = */ 0x0a\n );\n}\n\nfunction isHan(charCode) {\n return (\n (charCode >= 0x3400 && charCode <= 0x9fff) ||\n (charCode >= 0xf900 && charCode <= 0xfaff)\n );\n}\n\nfunction isKatakana(charCode) {\n return charCode >= 0x30a0 && charCode <= 0x30ff;\n}\n\nfunction isHiragana(charCode) {\n return charCode >= 0x3040 && charCode <= 0x309f;\n}\n\nfunction isHalfwidthKatakana(charCode) {\n return charCode >= 0xff60 && charCode <= 0xff9f;\n}\n\nfunction isThai(charCode) {\n return (charCode & 0xff80) === 0x0e00;\n}\n\n/**\n * This function is based on the word-break detection implemented in:\n * https://hg.mozilla.org/mozilla-central/file/tip/intl/lwbrk/WordBreaker.cpp\n */\nfunction getCharacterType(charCode) {\n if (isAlphabeticalScript(charCode)) {\n if (isAscii(charCode)) {\n if (isAsciiSpace(charCode)) {\n return CharacterType.SPACE;\n } else if (\n isAsciiAlpha(charCode) ||\n isAsciiDigit(charCode) ||\n charCode === /* UNDERSCORE = */ 0x5f\n ) {\n return CharacterType.ALPHA_LETTER;\n }\n return CharacterType.PUNCT;\n } else if (isThai(charCode)) {\n return CharacterType.THAI_LETTER;\n } else if (charCode === /* NBSP = */ 0xa0) {\n return CharacterType.SPACE;\n }\n return CharacterType.ALPHA_LETTER;\n }\n\n if (isHan(charCode)) {\n return CharacterType.HAN_LETTER;\n } else if (isKatakana(charCode)) {\n return CharacterType.KATAKANA_LETTER;\n } else if (isHiragana(charCode)) {\n return CharacterType.HIRAGANA_LETTER;\n } else if (isHalfwidthKatakana(charCode)) {\n return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n }\n return CharacterType.ALPHA_LETTER;\n}\n\nexport { CharacterType, getCharacterType };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { isValidRotation, parseQueryString } from \"./ui_utils.js\";\nimport { waitOnEventOrTimeout } from \"./event_utils.js\";\n\n// Heuristic value used when force-resetting `this._blockHashChange`.\nconst HASH_CHANGE_TIMEOUT = 1000; // milliseconds\n// Heuristic value used when adding the current position to the browser history.\nconst POSITION_UPDATED_THRESHOLD = 50;\n// Heuristic value used when adding a temporary position to the browser history.\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; // milliseconds\n\n/**\n * @typedef {Object} PDFHistoryOptions\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} InitializeParameters\n * @property {string} fingerprint - The PDF document's unique fingerprint.\n * @property {boolean} [resetHistory] - Reset the browsing history.\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\n * the current hash, when pushing/replacing browser history entries.\n */\n\n/**\n * @typedef {Object} PushParameters\n * @property {string} [namedDest] - The named destination. If absent, a\n * stringified version of `explicitDest` is used.\n * @property {Array} explicitDest - The explicit destination array.\n * @property {number} pageNumber - The page to which the destination points.\n */\n\nfunction getCurrentHash() {\n return document.location.hash;\n}\n\nclass PDFHistory {\n /**\n * @param {PDFHistoryOptions} options\n */\n constructor({ linkService, eventBus }) {\n this.linkService = linkService;\n this.eventBus = eventBus;\n\n this._initialized = false;\n this._fingerprint = \"\";\n this.reset();\n\n this._boundEvents = null;\n // Ensure that we don't miss a \"pagesinit\" event,\n // by registering the listener immediately.\n this.eventBus._on(\"pagesinit\", () => {\n this._isPagesLoaded = false;\n\n this.eventBus._on(\n \"pagesloaded\",\n evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n },\n { once: true }\n );\n });\n }\n\n /**\n * Initialize the history for the PDF document, using either the current\n * browser history entry or the document hash, whichever is present.\n * @param {InitializeParameters} params\n */\n initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\n if (!fingerprint || typeof fingerprint !== \"string\") {\n console.error(\n 'PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.'\n );\n return;\n }\n // Ensure that any old state is always reset upon initialization.\n if (this._initialized) {\n this.reset();\n }\n const reInitialized =\n this._fingerprint !== \"\" && this._fingerprint !== fingerprint;\n this._fingerprint = fingerprint;\n this._updateUrl = updateUrl === true;\n\n this._initialized = true;\n this._bindEvents();\n const state = window.history.state;\n\n this._popStateInProgress = false;\n this._blockHashChange = 0;\n this._currentHash = getCurrentHash();\n this._numPositionUpdates = 0;\n\n this._uid = this._maxUid = 0;\n this._destination = null;\n this._position = null;\n\n if (!this._isValidState(state, /* checkReload = */ true) || resetHistory) {\n const { hash, page, rotation } = this._parseCurrentHash(\n /* checkNameddest = */ true\n );\n\n if (!hash || reInitialized || resetHistory) {\n // Ensure that the browser history is reset on PDF document load.\n this._pushOrReplaceState(null, /* forceReplace = */ true);\n return;\n }\n // Ensure that the browser history is initialized correctly when\n // the document hash is present on PDF document load.\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n\n // The browser history contains a valid entry, ensure that the history is\n // initialized correctly on PDF document load.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (destination.rotation !== undefined) {\n this._initialRotation = destination.rotation;\n }\n if (destination.dest) {\n this._initialBookmark = JSON.stringify(destination.dest);\n\n // If the history is updated, e.g. through the user changing the hash,\n // before the initial destination has become visible, then we do *not*\n // want to potentially add `this._position` to the browser history.\n this._destination.page = null;\n } else if (destination.hash) {\n this._initialBookmark = destination.hash;\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this._initialBookmark = `page=${destination.page}`;\n }\n }\n\n /**\n * Reset the current `PDFHistory` instance, and consequently prevent any\n * further updates and/or navigation of the browser history.\n */\n reset() {\n if (this._initialized) {\n this._pageHide(); // Simulate a 'pagehide' event when resetting.\n\n this._initialized = false;\n this._unbindEvents();\n }\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n this._initialBookmark = null;\n this._initialRotation = null;\n }\n\n /**\n * Push an internal destination to the browser history.\n * @param {PushParameters}\n */\n push({ namedDest = null, explicitDest, pageNumber }) {\n if (!this._initialized) {\n return;\n }\n if (namedDest && typeof namedDest !== \"string\") {\n console.error(\n \"PDFHistory.push: \" +\n `\"${namedDest}\" is not a valid namedDest parameter.`\n );\n return;\n } else if (!Array.isArray(explicitDest)) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${explicitDest}\" is not a valid explicitDest parameter.`\n );\n return;\n } else if (!this._isValidPage(pageNumber)) {\n // Allow an unset `pageNumber` if and only if the history is still empty;\n // please refer to the `this._destination.page = null;` comment above.\n if (pageNumber !== null || this._destination) {\n console.error(\n \"PDFHistory.push: \" +\n `\"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n }\n\n const hash = namedDest || JSON.stringify(explicitDest);\n if (!hash) {\n // The hash *should* never be undefined, but if that were to occur,\n // avoid any possible issues by not updating the browser history.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination &&\n (isDestHashesEqual(this._destination.hash, hash) ||\n isDestArraysEqual(this._destination.dest, explicitDest))\n ) {\n // When the new destination is identical to `this._destination`, and\n // its `page` is undefined, replace the current browser history entry.\n // NOTE: This can only occur if `this._destination` was set either:\n // - through the document hash being specified on load.\n // - through the user changing the hash of the document.\n if (this._destination.page) {\n return;\n }\n forceReplace = true;\n }\n if (this._popStateInProgress && !forceReplace) {\n return;\n }\n\n this._pushOrReplaceState(\n {\n dest: explicitDest,\n hash,\n page: pageNumber,\n rotation: this.linkService.rotation,\n },\n forceReplace\n );\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new destination is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new destination is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push a page to the browser history; generally the `push` method should be\n * used instead.\n * @param {number} pageNumber\n */\n pushPage(pageNumber) {\n if (!this._initialized) {\n return;\n }\n if (!this._isValidPage(pageNumber)) {\n console.error(\n `PDFHistory.pushPage: \"${pageNumber}\" is not a valid page number.`\n );\n return;\n }\n\n if (this._destination?.page === pageNumber) {\n // When the new page is identical to the one in `this._destination`, we\n // don't want to add a potential duplicate entry in the browser history.\n return;\n }\n if (this._popStateInProgress) {\n return;\n }\n\n this._pushOrReplaceState({\n // Simulate an internal destination, for `this._tryPushCurrentPosition`:\n dest: null,\n hash: `page=${pageNumber}`,\n page: pageNumber,\n rotation: this.linkService.rotation,\n });\n\n if (!this._popStateInProgress) {\n // Prevent the browser history from updating while the new page is\n // being scrolled into view, to avoid potentially inconsistent state.\n this._popStateInProgress = true;\n // We defer the resetting of `this._popStateInProgress`, to account for\n // e.g. zooming occurring when the new page is being navigated to.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n }\n\n /**\n * Push the current position to the browser history.\n */\n pushCurrentPosition() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n this._tryPushCurrentPosition();\n }\n\n /**\n * Go back one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n back() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid > 0) {\n window.history.back();\n }\n }\n\n /**\n * Go forward one step in the browser history.\n * NOTE: Avoids navigating away from the document, useful for \"named actions\".\n */\n forward() {\n if (!this._initialized || this._popStateInProgress) {\n return;\n }\n const state = window.history.state;\n if (this._isValidState(state) && state.uid < this._maxUid) {\n window.history.forward();\n }\n }\n\n /**\n * @type {boolean} Indicating if the user is currently moving through the\n * browser history, useful e.g. for skipping the next 'hashchange' event.\n */\n get popStateInProgress() {\n return (\n this._initialized &&\n (this._popStateInProgress || this._blockHashChange > 0)\n );\n }\n\n get initialBookmark() {\n return this._initialized ? this._initialBookmark : null;\n }\n\n get initialRotation() {\n return this._initialized ? this._initialRotation : null;\n }\n\n /**\n * @private\n */\n _pushOrReplaceState(destination, forceReplace = false) {\n const shouldReplace = forceReplace || !this._destination;\n const newState = {\n fingerprint: this._fingerprint,\n uid: shouldReplace ? this._uid : this._uid + 1,\n destination,\n };\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n window.history.state?.chromecomState\n ) {\n // history.state.chromecomState is managed by chromecom.js.\n newState.chromecomState = window.history.state.chromecomState;\n }\n this._updateInternalState(destination, newState.uid);\n\n let newUrl;\n if (this._updateUrl && destination?.hash) {\n const baseUrl = document.location.href.split(\"#\")[0];\n // Prevent errors in Firefox.\n if (!baseUrl.startsWith(\"file://\")) {\n newUrl = `${baseUrl}#${destination.hash}`;\n }\n }\n if (shouldReplace) {\n window.history.replaceState(newState, \"\", newUrl);\n } else {\n window.history.pushState(newState, \"\", newUrl);\n }\n\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n top === window\n ) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n }\n\n /**\n * @private\n */\n _tryPushCurrentPosition(temporary = false) {\n if (!this._position) {\n return;\n }\n let position = this._position;\n if (temporary) {\n position = Object.assign(Object.create(null), this._position);\n position.temporary = true;\n }\n\n if (!this._destination) {\n this._pushOrReplaceState(position);\n return;\n }\n if (this._destination.temporary) {\n // Always replace a previous *temporary* position.\n this._pushOrReplaceState(position, /* forceReplace = */ true);\n return;\n }\n if (this._destination.hash === position.hash) {\n return; // The current document position has not changed.\n }\n if (\n !this._destination.page &&\n (POSITION_UPDATED_THRESHOLD <= 0 ||\n this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)\n ) {\n // `this._destination` was set through the user changing the hash of\n // the document. Do not add `this._position` to the browser history,\n // to avoid \"flooding\" it with lots of (nearly) identical entries,\n // since we cannot ensure that the document position has changed.\n return;\n }\n\n let forceReplace = false;\n if (\n this._destination.page >= position.first &&\n this._destination.page <= position.page\n ) {\n // When the `page` of `this._destination` is still visible, do not\n // update the browsing history when `this._destination` either:\n // - contains an internal destination, since in this case we\n // cannot ensure that the document position has actually changed.\n // - was set through the user changing the hash of the document.\n if (this._destination.dest !== undefined || !this._destination.first) {\n return;\n }\n // To avoid \"flooding\" the browser history, replace the current entry.\n forceReplace = true;\n }\n this._pushOrReplaceState(position, forceReplace);\n }\n\n /**\n * @private\n */\n _isValidPage(val) {\n return (\n Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount\n );\n }\n\n /**\n * @private\n */\n _isValidState(state, checkReload = false) {\n if (!state) {\n return false;\n }\n if (state.fingerprint !== this._fingerprint) {\n if (checkReload) {\n // Potentially accept the history entry, even if the fingerprints don't\n // match, when the viewer was reloaded (see issue 6847).\n if (\n typeof state.fingerprint !== \"string\" ||\n state.fingerprint.length !== this._fingerprint.length\n ) {\n return false;\n }\n const [perfEntry] = performance.getEntriesByType(\"navigation\");\n if (perfEntry?.type !== \"reload\") {\n return false;\n }\n } else {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return false;\n }\n }\n if (!Number.isInteger(state.uid) || state.uid < 0) {\n return false;\n }\n if (state.destination === null || typeof state.destination !== \"object\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n */\n _updateInternalState(destination, uid, removeTemporary = false) {\n if (this._updateViewareaTimeout) {\n // When updating `this._destination`, make sure that we always wait for\n // the next 'updateviewarea' event before (potentially) attempting to\n // push the current position to the browser history.\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n if (removeTemporary && destination?.temporary) {\n // When the `destination` comes from the browser history,\n // we no longer treat it as a *temporary* position.\n delete destination.temporary;\n }\n this._destination = destination;\n this._uid = uid;\n this._maxUid = Math.max(this._maxUid, uid);\n // This should always be reset when `this._destination` is updated.\n this._numPositionUpdates = 0;\n }\n\n /**\n * @private\n */\n _parseCurrentHash(checkNameddest = false) {\n const hash = unescape(getCurrentHash()).substring(1);\n const params = parseQueryString(hash);\n\n const nameddest = params.get(\"nameddest\") || \"\";\n let page = params.get(\"page\") | 0;\n\n if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\n page = null;\n }\n return { hash, page, rotation: this.linkService.rotation };\n }\n\n /**\n * @private\n */\n _updateViewarea({ location }) {\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n\n this._position = {\n hash: location.pdfOpenParams.substring(1),\n page: this.linkService.page,\n first: location.pageNumber,\n rotation: location.rotation,\n };\n\n if (this._popStateInProgress) {\n return;\n }\n\n if (\n POSITION_UPDATED_THRESHOLD > 0 &&\n this._isPagesLoaded &&\n this._destination &&\n !this._destination.page\n ) {\n // If the current destination was set through the user changing the hash\n // of the document, we will usually not try to push the current position\n // to the browser history; see `this._tryPushCurrentPosition()`.\n //\n // To prevent `this._tryPushCurrentPosition()` from effectively being\n // reduced to a no-op in this case, we will assume that the position\n // *did* in fact change if the 'updateviewarea' event was dispatched\n // more than `POSITION_UPDATED_THRESHOLD` times.\n this._numPositionUpdates++;\n }\n\n if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n // When closing the browser, a 'pagehide' event will be dispatched which\n // *should* allow us to push the current position to the browser history.\n // In practice, it seems that the event is arriving too late in order for\n // the session history to be successfully updated.\n // (For additional details, please refer to the discussion in\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1153393.)\n //\n // To workaround this we attempt to *temporarily* add the current position\n // to the browser history only when the viewer is *idle*,\n // i.e. when scrolling and/or zooming does not occur.\n //\n // PLEASE NOTE: It's absolutely imperative that the browser history is\n // *not* updated too often, since that would render the viewer more or\n // less unusable. Hence the use of a timeout to delay the update until\n // the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\n this._updateViewareaTimeout = setTimeout(() => {\n if (!this._popStateInProgress) {\n this._tryPushCurrentPosition(/* temporary = */ true);\n }\n this._updateViewareaTimeout = null;\n }, UPDATE_VIEWAREA_TIMEOUT);\n }\n }\n\n /**\n * @private\n */\n _popState({ state }) {\n const newHash = getCurrentHash(),\n hashChanged = this._currentHash !== newHash;\n this._currentHash = newHash;\n\n if (\n (typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"CHROME\") &&\n state?.chromecomState &&\n !this._isValidState(state)) ||\n !state\n ) {\n // This case corresponds to the user changing the hash of the document.\n this._uid++;\n\n const { hash, page, rotation } = this._parseCurrentHash();\n this._pushOrReplaceState(\n { hash, page, rotation },\n /* forceReplace = */ true\n );\n return;\n }\n if (!this._isValidState(state)) {\n // This should only occur in viewers with support for opening more than\n // one PDF document, e.g. the GENERIC viewer.\n return;\n }\n\n // Prevent the browser history from updating until the new destination,\n // as stored in the browser history, has been scrolled into view.\n this._popStateInProgress = true;\n\n if (hashChanged) {\n // When the hash changed, implying that the 'popstate' event will be\n // followed by a 'hashchange' event, then we do *not* want to update the\n // browser history when handling the 'hashchange' event (in web/app.js)\n // since that would *overwrite* the new destination navigated to below.\n //\n // To avoid accidentally disabling all future user-initiated hash changes,\n // if there's e.g. another 'hashchange' listener that stops the event\n // propagation, we make sure to always force-reset `this._blockHashChange`\n // after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\n this._blockHashChange++;\n waitOnEventOrTimeout({\n target: window,\n name: \"hashchange\",\n delay: HASH_CHANGE_TIMEOUT,\n }).then(() => {\n this._blockHashChange--;\n });\n }\n\n // Navigate to the new destination.\n const destination = state.destination;\n this._updateInternalState(\n destination,\n state.uid,\n /* removeTemporary = */ true\n );\n\n if (isValidRotation(destination.rotation)) {\n this.linkService.rotation = destination.rotation;\n }\n if (destination.dest) {\n this.linkService.goToDestination(destination.dest);\n } else if (destination.hash) {\n this.linkService.setHash(destination.hash);\n } else if (destination.page) {\n // Fallback case; shouldn't be necessary, but better safe than sorry.\n this.linkService.page = destination.page;\n }\n\n // Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\n // resetting of `this._popStateInProgress` slightly.\n Promise.resolve().then(() => {\n this._popStateInProgress = false;\n });\n }\n\n /**\n * @private\n */\n _pageHide() {\n // Attempt to push the `this._position` into the browser history when\n // navigating away from the document. This is *only* done if the history\n // is empty/temporary, since otherwise an existing browser history entry\n // will end up being overwritten (given that new entries cannot be pushed\n // into the browser history when the 'unload' event has already fired).\n if (!this._destination || this._destination.temporary) {\n this._tryPushCurrentPosition();\n }\n }\n\n /**\n * @private\n */\n _bindEvents() {\n if (this._boundEvents) {\n return; // The event listeners were already added.\n }\n this._boundEvents = {\n updateViewarea: this._updateViewarea.bind(this),\n popState: this._popState.bind(this),\n pageHide: this._pageHide.bind(this),\n };\n\n this.eventBus._on(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.addEventListener(\"popstate\", this._boundEvents.popState);\n window.addEventListener(\"pagehide\", this._boundEvents.pageHide);\n }\n\n /**\n * @private\n */\n _unbindEvents() {\n if (!this._boundEvents) {\n return; // The event listeners were already removed.\n }\n this.eventBus._off(\"updateviewarea\", this._boundEvents.updateViewarea);\n window.removeEventListener(\"popstate\", this._boundEvents.popState);\n window.removeEventListener(\"pagehide\", this._boundEvents.pageHide);\n\n this._boundEvents = null;\n }\n}\n\nfunction isDestHashesEqual(destHash, pushHash) {\n if (typeof destHash !== \"string\" || typeof pushHash !== \"string\") {\n return false;\n }\n if (destHash === pushHash) {\n return true;\n }\n const nameddest = parseQueryString(destHash).get(\"nameddest\");\n if (nameddest === pushHash) {\n return true;\n }\n return false;\n}\n\nfunction isDestArraysEqual(firstDest, secondDest) {\n function isEntryEqual(first, second) {\n if (typeof first !== typeof second) {\n return false;\n }\n if (Array.isArray(first) || Array.isArray(second)) {\n return false;\n }\n if (first !== null && typeof first === \"object\" && second !== null) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (const key in first) {\n if (!isEntryEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n }\n return first === second || (Number.isNaN(first) && Number.isNaN(second));\n }\n\n if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n return false;\n }\n if (firstDest.length !== secondDest.length) {\n return false;\n }\n for (let i = 0, ii = firstDest.length; i < ii; i++) {\n if (!isEntryEqual(firstDest[i], secondDest[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\n\n/**\n * @typedef {Object} PDFLayerViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * @typedef {Object} PDFLayerViewerRenderParameters\n * @property {OptionalContentConfig|null} optionalContentConfig - An\n * {OptionalContentConfig} instance.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFLayerViewer extends BaseTreeViewer {\n constructor(options) {\n super(options);\n this.l10n = options.l10n;\n\n this.eventBus._on(\"resetlayers\", this._resetLayers.bind(this));\n this.eventBus._on(\"togglelayerstree\", this._toggleAllTreeItems.bind(this));\n }\n\n reset() {\n super.reset();\n this._optionalContentConfig = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(layersCount) {\n this.eventBus.dispatch(\"layersloaded\", {\n source: this,\n layersCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { groupId, input }) {\n const setVisibility = () => {\n this._optionalContentConfig.setVisibility(groupId, input.checked);\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(this._optionalContentConfig),\n });\n };\n\n element.onclick = evt => {\n if (evt.target === input) {\n setVisibility();\n return true;\n } else if (evt.target !== element) {\n return true; // The target is the \"label\", which is handled above.\n }\n input.checked = !input.checked;\n setVisibility();\n return false;\n };\n }\n\n /**\n * @private\n */\n async _setNestedName(element, { name = null }) {\n if (typeof name === \"string\") {\n element.textContent = this._normalizeTextContent(name);\n return;\n }\n element.textContent = await this.l10n.get(\"additional_layers\");\n element.style.fontStyle = \"italic\";\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { name = null }) {\n super._addToggleButton(div, /* hidden = */ name === null);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._optionalContentConfig) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFLayerViewerRenderParameters} params\n */\n render({ optionalContentConfig, pdfDocument }) {\n if (this._optionalContentConfig) {\n this.reset();\n }\n this._optionalContentConfig = optionalContentConfig || null;\n this._pdfDocument = pdfDocument || null;\n\n const groups = optionalContentConfig?.getOrder();\n if (!groups) {\n this._dispatchEvent(/* layersCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment(),\n queue = [{ parent: fragment, groups }];\n let layersCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const groupId of levelData.groups) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n div.appendChild(element);\n\n if (typeof groupId === \"object\") {\n hasAnyNesting = true;\n this._addToggleButton(div, groupId);\n this._setNestedName(element, groupId);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, groups: groupId.order });\n } else {\n const group = optionalContentConfig.getGroup(groupId);\n\n const input = document.createElement(\"input\");\n this._bindLink(element, { groupId, input });\n input.type = \"checkbox\";\n input.id = groupId;\n input.checked = group.visible;\n\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", groupId);\n label.textContent = this._normalizeTextContent(group.name);\n\n element.appendChild(input);\n element.appendChild(label);\n\n layersCount++;\n }\n\n levelData.parent.appendChild(div);\n }\n }\n\n this._finishRendering(fragment, layersCount, hasAnyNesting);\n }\n\n /**\n * @private\n */\n async _resetLayers() {\n if (!this._optionalContentConfig) {\n return;\n }\n // Fetch the default optional content configuration...\n const optionalContentConfig =\n await this._pdfDocument.getOptionalContentConfig();\n\n this.eventBus.dispatch(\"optionalcontentconfig\", {\n source: this,\n promise: Promise.resolve(optionalContentConfig),\n });\n\n // ... and reset the sidebarView to the default state.\n this.render({\n optionalContentConfig,\n pdfDocument: this._pdfDocument,\n });\n }\n}\n\nexport { PDFLayerViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseTreeViewer } from \"./base_tree_viewer.js\";\nimport { createPromiseCapability } from \"pdfjs-lib\";\nimport { SidebarView } from \"./ui_utils.js\";\n\n/**\n * @typedef {Object} PDFOutlineViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} PDFOutlineViewerRenderParameters\n * @property {Array|null} outline - An array of outline objects.\n * @property {PDFDocument} pdfDocument - A {PDFDocument} instance.\n */\n\nclass PDFOutlineViewer extends BaseTreeViewer {\n /**\n * @param {PDFOutlineViewerOptions} options\n */\n constructor(options) {\n super(options);\n this.linkService = options.linkService;\n\n this.eventBus._on(\"toggleoutlinetree\", this._toggleAllTreeItems.bind(this));\n this.eventBus._on(\n \"currentoutlineitem\",\n this._currentOutlineItem.bind(this)\n );\n\n this.eventBus._on(\"pagechanging\", evt => {\n this._currentPageNumber = evt.pageNumber;\n });\n this.eventBus._on(\"pagesloaded\", evt => {\n this._isPagesLoaded = !!evt.pagesCount;\n\n // If the capability is still pending, see the `_dispatchEvent`-method,\n // we know that the `currentOutlineItem`-button can be enabled here.\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n });\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this._sidebarView = evt.view;\n });\n }\n\n reset() {\n super.reset();\n this._outline = null;\n\n this._pageNumberToDestHashCapability = null;\n this._currentPageNumber = 1;\n this._isPagesLoaded = null;\n\n if (\n this._currentOutlineItemCapability &&\n !this._currentOutlineItemCapability.settled\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n }\n this._currentOutlineItemCapability = null;\n }\n\n /**\n * @private\n */\n _dispatchEvent(outlineCount) {\n this._currentOutlineItemCapability = createPromiseCapability();\n if (\n outlineCount === 0 ||\n this._pdfDocument?.loadingParams.disableAutoFetch\n ) {\n this._currentOutlineItemCapability.resolve(/* enabled = */ false);\n } else if (this._isPagesLoaded !== null) {\n this._currentOutlineItemCapability.resolve(\n /* enabled = */ this._isPagesLoaded\n );\n }\n\n this.eventBus.dispatch(\"outlineloaded\", {\n source: this,\n outlineCount,\n currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, { url, newWindow, dest }) {\n const { linkService } = this;\n\n if (url) {\n linkService.addLinkAttributes(element, url, newWindow);\n return;\n }\n\n element.href = linkService.getDestinationHash(dest);\n element.onclick = evt => {\n this._updateCurrentTreeItem(evt.target.parentNode);\n\n if (dest) {\n linkService.goToDestination(dest);\n }\n return false;\n };\n }\n\n /**\n * @private\n */\n _setStyles(element, { bold, italic }) {\n if (bold) {\n element.style.fontWeight = \"bold\";\n }\n if (italic) {\n element.style.fontStyle = \"italic\";\n }\n }\n\n /**\n * @private\n */\n _addToggleButton(div, { count, items }) {\n let hidden = false;\n if (count < 0) {\n let totalCount = items.length;\n if (totalCount > 0) {\n const queue = [...items];\n while (queue.length > 0) {\n const { count: nestedCount, items: nestedItems } = queue.shift();\n if (nestedCount > 0 && nestedItems.length > 0) {\n totalCount += nestedItems.length;\n queue.push(...nestedItems);\n }\n }\n }\n if (Math.abs(count) === totalCount) {\n hidden = true;\n }\n }\n super._addToggleButton(div, hidden);\n }\n\n /**\n * @private\n */\n _toggleAllTreeItems() {\n if (!this._outline) {\n return;\n }\n super._toggleAllTreeItems();\n }\n\n /**\n * @param {PDFOutlineViewerRenderParameters} params\n */\n render({ outline, pdfDocument }) {\n if (this._outline) {\n this.reset();\n }\n this._outline = outline || null;\n this._pdfDocument = pdfDocument || null;\n\n if (!outline) {\n this._dispatchEvent(/* outlineCount = */ 0);\n return;\n }\n\n const fragment = document.createDocumentFragment();\n const queue = [{ parent: fragment, items: outline }];\n let outlineCount = 0,\n hasAnyNesting = false;\n while (queue.length > 0) {\n const levelData = queue.shift();\n for (const item of levelData.items) {\n const div = document.createElement(\"div\");\n div.className = \"treeItem\";\n\n const element = document.createElement(\"a\");\n this._bindLink(element, item);\n this._setStyles(element, item);\n element.textContent = this._normalizeTextContent(item.title);\n\n div.appendChild(element);\n\n if (item.items.length > 0) {\n hasAnyNesting = true;\n this._addToggleButton(div, item);\n\n const itemsDiv = document.createElement(\"div\");\n itemsDiv.className = \"treeItems\";\n div.appendChild(itemsDiv);\n\n queue.push({ parent: itemsDiv, items: item.items });\n }\n\n levelData.parent.appendChild(div);\n outlineCount++;\n }\n }\n\n this._finishRendering(fragment, outlineCount, hasAnyNesting);\n }\n\n /**\n * Find/highlight the current outline item, corresponding to the active page.\n * @private\n */\n async _currentOutlineItem() {\n if (!this._isPagesLoaded) {\n throw new Error(\"_currentOutlineItem: All pages have not been loaded.\");\n }\n if (!this._outline || !this._pdfDocument) {\n return;\n }\n\n const pageNumberToDestHash = await this._getPageNumberToDestHash(\n this._pdfDocument\n );\n if (!pageNumberToDestHash) {\n return;\n }\n this._updateCurrentTreeItem(/* treeItem = */ null);\n\n if (this._sidebarView !== SidebarView.OUTLINE) {\n return; // The outline view is no longer visible, hence do nothing.\n }\n // When there is no destination on the current page, always check the\n // previous ones in (reverse) order.\n for (let i = this._currentPageNumber; i > 0; i--) {\n const destHash = pageNumberToDestHash.get(i);\n if (!destHash) {\n continue;\n }\n const linkElement = this.container.querySelector(`a[href=\"${destHash}\"]`);\n if (!linkElement) {\n continue;\n }\n this._scrollToCurrentTreeItem(linkElement.parentNode);\n break;\n }\n }\n\n /**\n * To (significantly) simplify the overall implementation, we will only\n * consider *one* destination per page when finding/highlighting the current\n * outline item (similar to e.g. Adobe Reader); more specifically, we choose\n * the *first* outline item at the *lowest* level of the outline tree.\n * @private\n */\n async _getPageNumberToDestHash(pdfDocument) {\n if (this._pageNumberToDestHashCapability) {\n return this._pageNumberToDestHashCapability.promise;\n }\n this._pageNumberToDestHashCapability = createPromiseCapability();\n\n const pageNumberToDestHash = new Map(),\n pageNumberNesting = new Map();\n const queue = [{ nesting: 0, items: this._outline }];\n while (queue.length > 0) {\n const levelData = queue.shift(),\n currentNesting = levelData.nesting;\n for (const { dest, items } of levelData.items) {\n let explicitDest, pageNumber;\n if (typeof dest === \"string\") {\n explicitDest = await pdfDocument.getDestination(dest);\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n } else {\n explicitDest = dest;\n }\n if (Array.isArray(explicitDest)) {\n const [destRef] = explicitDest;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this.linkService._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n try {\n pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1;\n\n if (pdfDocument !== this._pdfDocument) {\n return null; // The document was closed while the data resolved.\n }\n this.linkService.cachePageRef(pageNumber, destRef);\n } catch (ex) {\n // Invalid page reference, ignore it and continue parsing.\n }\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n }\n\n if (\n Number.isInteger(pageNumber) &&\n (!pageNumberToDestHash.has(pageNumber) ||\n currentNesting > pageNumberNesting.get(pageNumber))\n ) {\n const destHash = this.linkService.getDestinationHash(dest);\n pageNumberToDestHash.set(pageNumber, destHash);\n pageNumberNesting.set(pageNumber, currentNesting);\n }\n }\n\n if (items.length > 0) {\n queue.push({ nesting: currentNesting + 1, items });\n }\n }\n }\n\n this._pageNumberToDestHashCapability.resolve(\n pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\n );\n return this._pageNumberToDestHashCapability.promise;\n }\n}\n\nexport { PDFOutlineViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n normalizeWheelEventDelta,\n PresentationModeState,\n ScrollMode,\n SpreadMode,\n} from \"./ui_utils.js\";\n\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms\nconst ACTIVE_SELECTOR = \"pdfPresentationMode\";\nconst CONTROLS_SELECTOR = \"pdfPresentationModeControls\";\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; // in ms\nconst PAGE_SWITCH_THRESHOLD = 0.1;\n\n// Number of CSS pixels for a movement to count as a swipe.\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\n\n// Swipe angle deviation from the x or y axis before it is not\n// considered a swipe in that direction any more.\nconst SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\n/**\n * @typedef {Object} PDFPresentationModeOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {EventBus} eventBus - The application event bus.\n */\n\nclass PDFPresentationMode {\n #state = PresentationModeState.UNKNOWN;\n\n #args = null;\n\n /**\n * @param {PDFPresentationModeOptions} options\n */\n constructor({ container, pdfViewer, eventBus }) {\n this.container = container;\n this.pdfViewer = pdfViewer;\n this.eventBus = eventBus;\n\n this.contextMenuOpen = false;\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n this.touchSwipeState = null;\n }\n\n /**\n * Request the browser to enter fullscreen mode.\n * @returns {Promise<boolean>} Indicating if the request was successful.\n */\n async request() {\n const { container, pdfViewer } = this;\n\n if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {\n return false;\n }\n this.#addFullscreenChangeListeners();\n this.#notifyStateChange(PresentationModeState.CHANGING);\n\n const promise = container.requestFullscreen();\n\n this.#args = {\n pageNumber: pdfViewer.currentPageNumber,\n scaleValue: pdfViewer.currentScaleValue,\n scrollMode: pdfViewer.scrollMode,\n spreadMode: null,\n };\n\n if (\n pdfViewer.spreadMode !== SpreadMode.NONE &&\n !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)\n ) {\n console.warn(\n \"Ignoring Spread modes when entering PresentationMode, \" +\n \"since the document may contain varying page sizes.\"\n );\n this.#args.spreadMode = pdfViewer.spreadMode;\n }\n\n try {\n await promise;\n return true;\n } catch (reason) {\n this.#removeFullscreenChangeListeners();\n this.#notifyStateChange(PresentationModeState.NORMAL);\n }\n return false;\n }\n\n get active() {\n return (\n this.#state === PresentationModeState.CHANGING ||\n this.#state === PresentationModeState.FULLSCREEN\n );\n }\n\n #mouseWheel(evt) {\n if (!this.active) {\n return;\n }\n evt.preventDefault();\n\n const delta = normalizeWheelEventDelta(evt);\n const currentTime = Date.now();\n const storedTime = this.mouseScrollTimeStamp;\n\n // If we've already switched page, avoid accidentally switching again.\n if (\n currentTime > storedTime &&\n currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME\n ) {\n return;\n }\n // If the scroll direction changed, reset the accumulated scroll delta.\n if (\n (this.mouseScrollDelta > 0 && delta < 0) ||\n (this.mouseScrollDelta < 0 && delta > 0)\n ) {\n this.#resetMouseScrollState();\n }\n this.mouseScrollDelta += delta;\n\n if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n const totalDelta = this.mouseScrollDelta;\n this.#resetMouseScrollState();\n const success =\n totalDelta > 0\n ? this.pdfViewer.previousPage()\n : this.pdfViewer.nextPage();\n if (success) {\n this.mouseScrollTimeStamp = currentTime;\n }\n }\n }\n\n #notifyStateChange(state) {\n this.#state = state;\n\n this.eventBus.dispatch(\"presentationmodechanged\", { source: this, state });\n }\n\n #enter() {\n this.#notifyStateChange(PresentationModeState.FULLSCREEN);\n this.container.classList.add(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when entering\n // Presentation Mode, by waiting until fullscreen mode in enabled.\n setTimeout(() => {\n this.pdfViewer.scrollMode = ScrollMode.PAGE;\n if (this.#args.spreadMode !== null) {\n this.pdfViewer.spreadMode = SpreadMode.NONE;\n }\n this.pdfViewer.currentPageNumber = this.#args.pageNumber;\n this.pdfViewer.currentScaleValue = \"page-fit\";\n }, 0);\n\n this.#addWindowListeners();\n this.#showControls();\n this.contextMenuOpen = false;\n\n // Text selection is disabled in Presentation Mode, thus it's not possible\n // for the user to deselect text that is selected (e.g. with \"Select all\")\n // when entering Presentation Mode, hence we remove any active selection.\n window.getSelection().removeAllRanges();\n }\n\n #exit() {\n const pageNumber = this.pdfViewer.currentPageNumber;\n this.container.classList.remove(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when exiting\n // Presentation Mode, by waiting until fullscreen mode is disabled.\n setTimeout(() => {\n this.#removeFullscreenChangeListeners();\n this.#notifyStateChange(PresentationModeState.NORMAL);\n\n this.pdfViewer.scrollMode = this.#args.scrollMode;\n if (this.#args.spreadMode !== null) {\n this.pdfViewer.spreadMode = this.#args.spreadMode;\n }\n this.pdfViewer.currentScaleValue = this.#args.scaleValue;\n this.pdfViewer.currentPageNumber = pageNumber;\n this.#args = null;\n }, 0);\n\n this.#removeWindowListeners();\n this.#hideControls();\n this.#resetMouseScrollState();\n this.contextMenuOpen = false;\n }\n\n #mouseDown(evt) {\n if (this.contextMenuOpen) {\n this.contextMenuOpen = false;\n evt.preventDefault();\n return;\n }\n if (evt.button === 0) {\n // Enable clicking of links in presentation mode. Note: only links\n // pointing to destinations in the current PDF document work.\n const isInternalLink =\n evt.target.href && evt.target.classList.contains(\"internalLink\");\n if (!isInternalLink) {\n // Unless an internal link was clicked, advance one page.\n evt.preventDefault();\n\n if (evt.shiftKey) {\n this.pdfViewer.previousPage();\n } else {\n this.pdfViewer.nextPage();\n }\n }\n }\n }\n\n #contextMenu() {\n this.contextMenuOpen = true;\n }\n\n #showControls() {\n if (this.controlsTimeout) {\n clearTimeout(this.controlsTimeout);\n } else {\n this.container.classList.add(CONTROLS_SELECTOR);\n }\n this.controlsTimeout = setTimeout(() => {\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }, DELAY_BEFORE_HIDING_CONTROLS);\n }\n\n #hideControls() {\n if (!this.controlsTimeout) {\n return;\n }\n clearTimeout(this.controlsTimeout);\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }\n\n /**\n * Resets the properties used for tracking mouse scrolling events.\n */\n #resetMouseScrollState() {\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n }\n\n #touchSwipe(evt) {\n if (!this.active) {\n return;\n }\n if (evt.touches.length > 1) {\n // Multiple touch points detected; cancel the swipe.\n this.touchSwipeState = null;\n return;\n }\n\n switch (evt.type) {\n case \"touchstart\":\n this.touchSwipeState = {\n startX: evt.touches[0].pageX,\n startY: evt.touches[0].pageY,\n endX: evt.touches[0].pageX,\n endY: evt.touches[0].pageY,\n };\n break;\n case \"touchmove\":\n if (this.touchSwipeState === null) {\n return;\n }\n this.touchSwipeState.endX = evt.touches[0].pageX;\n this.touchSwipeState.endY = evt.touches[0].pageY;\n // Avoid the swipe from triggering browser gestures (Chrome in\n // particular has some sort of swipe gesture in fullscreen mode).\n evt.preventDefault();\n break;\n case \"touchend\":\n if (this.touchSwipeState === null) {\n return;\n }\n let delta = 0;\n const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n const absAngle = Math.abs(Math.atan2(dy, dx));\n if (\n Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n (absAngle <= SWIPE_ANGLE_THRESHOLD ||\n absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\n ) {\n // Horizontal swipe.\n delta = dx;\n } else if (\n Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD\n ) {\n // Vertical swipe.\n delta = dy;\n }\n if (delta > 0) {\n this.pdfViewer.previousPage();\n } else if (delta < 0) {\n this.pdfViewer.nextPage();\n }\n break;\n }\n }\n\n #addWindowListeners() {\n this.showControlsBind = this.#showControls.bind(this);\n this.mouseDownBind = this.#mouseDown.bind(this);\n this.mouseWheelBind = this.#mouseWheel.bind(this);\n this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this);\n this.contextMenuBind = this.#contextMenu.bind(this);\n this.touchSwipeBind = this.#touchSwipe.bind(this);\n\n window.addEventListener(\"mousemove\", this.showControlsBind);\n window.addEventListener(\"mousedown\", this.mouseDownBind);\n window.addEventListener(\"wheel\", this.mouseWheelBind, { passive: false });\n window.addEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.addEventListener(\"contextmenu\", this.contextMenuBind);\n window.addEventListener(\"touchstart\", this.touchSwipeBind);\n window.addEventListener(\"touchmove\", this.touchSwipeBind);\n window.addEventListener(\"touchend\", this.touchSwipeBind);\n }\n\n #removeWindowListeners() {\n window.removeEventListener(\"mousemove\", this.showControlsBind);\n window.removeEventListener(\"mousedown\", this.mouseDownBind);\n window.removeEventListener(\"wheel\", this.mouseWheelBind, {\n passive: false,\n });\n window.removeEventListener(\"keydown\", this.resetMouseScrollStateBind);\n window.removeEventListener(\"contextmenu\", this.contextMenuBind);\n window.removeEventListener(\"touchstart\", this.touchSwipeBind);\n window.removeEventListener(\"touchmove\", this.touchSwipeBind);\n window.removeEventListener(\"touchend\", this.touchSwipeBind);\n\n delete this.showControlsBind;\n delete this.mouseDownBind;\n delete this.mouseWheelBind;\n delete this.resetMouseScrollStateBind;\n delete this.contextMenuBind;\n delete this.touchSwipeBind;\n }\n\n #fullscreenChange() {\n if (/* isFullscreen = */ document.fullscreenElement) {\n this.#enter();\n } else {\n this.#exit();\n }\n }\n\n #addFullscreenChangeListeners() {\n this.fullscreenChangeBind = this.#fullscreenChange.bind(this);\n window.addEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n }\n\n #removeFullscreenChangeListeners() {\n window.removeEventListener(\"fullscreenchange\", this.fullscreenChangeBind);\n delete this.fullscreenChangeBind;\n }\n}\n\nexport { PDFPresentationMode };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n/** @typedef {import(\"./pdf_viewer\").PDFViewer} PDFViewer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_thumbnail_viewer\").PDFThumbnailViewer} PDFThumbnailViewer */\n\nimport { RenderingCancelledException } from \"pdfjs-lib\";\nimport { RenderingStates } from \"./ui_utils.js\";\n\nconst CLEANUP_TIMEOUT = 30000;\n\n/**\n * Controls rendering of the views for pages and thumbnails.\n */\nclass PDFRenderingQueue {\n constructor() {\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n /** @type {number} */\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n /**\n * @param {PDFViewer} pdfViewer\n */\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n /**\n * @param {PDFThumbnailViewer} pdfThumbnailViewer\n */\n setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n\n /**\n * @returns {boolean}\n */\n hasViewer() {\n return !!this.pdfViewer;\n }\n\n /**\n * @param {Object} currentlyVisiblePages\n */\n renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n\n // Pages have a higher priority than thumbnails, so check them first.\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n // No pages needed rendering, so check thumbnails.\n if (\n this.isThumbnailViewEnabled &&\n this.pdfThumbnailViewer?.forceRendering()\n ) {\n return;\n }\n\n if (this.printing) {\n // If printing is currently ongoing do not reschedule cleanup.\n return;\n }\n\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n\n /**\n * @param {Object} visible\n * @param {Array} views\n * @param {boolean} scrolledDown\n * @param {boolean} [preRenderExtra]\n */\n getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\n /**\n * The state has changed. Figure out which page has the highest priority to\n * render next (if any).\n *\n * Priority:\n * 1. visible pages\n * 2. if last scrolled down, the page after the visible pages, or\n * if last scrolled up, the page before the visible pages\n */\n const visibleViews = visible.views,\n numVisible = visibleViews.length;\n\n if (numVisible === 0) {\n return null;\n }\n for (let i = 0; i < numVisible; i++) {\n const view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n const firstId = visible.first.id,\n lastId = visible.last.id;\n\n // All the visible views have rendered; try to handle any \"holes\" in the\n // page layout (can happen e.g. with spreadModes at higher zoom levels).\n if (lastId - firstId + 1 > numVisible) {\n const visibleIds = visible.ids;\n for (let i = 1, ii = lastId - firstId; i < ii; i++) {\n const holeId = scrolledDown ? firstId + i : lastId - i;\n if (visibleIds.has(holeId)) {\n continue;\n }\n const holeView = views[holeId - 1];\n if (!this.isViewFinished(holeView)) {\n return holeView;\n }\n }\n }\n\n // All the visible views have rendered; try to render next/previous page.\n // (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\n let preRenderIndex = scrolledDown ? lastId : firstId - 2;\n let preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n if (preRenderExtra) {\n preRenderIndex += scrolledDown ? 1 : -1;\n preRenderView = views[preRenderIndex];\n\n if (preRenderView && !this.isViewFinished(preRenderView)) {\n return preRenderView;\n }\n }\n // Everything that needs to be rendered has been.\n return null;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n\n /**\n * Render a page or thumbnail view. This calls the appropriate function\n * based on the views state. If the view is already rendered it will return\n * `false`.\n *\n * @param {IRenderableView} view\n */\n renderView(view) {\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n view\n .draw()\n .finally(() => {\n this.renderHighestPriority();\n })\n .catch(reason => {\n if (reason instanceof RenderingCancelledException) {\n return;\n }\n console.error(`renderView: \"${reason}\"`);\n });\n break;\n }\n return true;\n }\n}\n\nexport { PDFRenderingQueue };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n\nimport { apiPageLayoutToViewerModes, RenderingStates } from \"./ui_utils.js\";\nimport { createPromiseCapability, shadow } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} PDFScriptingManagerOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {string} sandboxBundleSrc - The path and filename of the scripting\n * bundle.\n * @property {Object} [scriptingFactory] - The factory that is used when\n * initializing scripting; must contain a `createScripting` method.\n * PLEASE NOTE: Primarily intended for the default viewer use-case.\n * @property {function} [docPropertiesLookup] - The function that is used to\n * lookup the necessary document properties.\n */\n\nclass PDFScriptingManager {\n /**\n * @param {PDFScriptingManagerOptions} options\n */\n constructor({\n eventBus,\n sandboxBundleSrc = null,\n scriptingFactory = null,\n docPropertiesLookup = null,\n }) {\n this._pdfDocument = null;\n this._pdfViewer = null;\n this._closeCapability = null;\n this._destroyCapability = null;\n\n this._scripting = null;\n this._mouseState = Object.create(null);\n this._ready = false;\n\n this._eventBus = eventBus;\n this._sandboxBundleSrc = sandboxBundleSrc;\n this._scriptingFactory = scriptingFactory;\n this._docPropertiesLookup = docPropertiesLookup;\n\n // The default viewer already handles adding/removing of DOM events,\n // hence limit this to only the viewer components.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"COMPONENTS\") &&\n !this._scriptingFactory\n ) {\n window.addEventListener(\"updatefromsandbox\", event => {\n this._eventBus.dispatch(\"updatefromsandbox\", {\n source: window,\n detail: event.detail,\n });\n });\n }\n }\n\n setViewer(pdfViewer) {\n this._pdfViewer = pdfViewer;\n }\n\n async setDocument(pdfDocument) {\n if (this._pdfDocument) {\n await this._destroyScripting();\n }\n this._pdfDocument = pdfDocument;\n\n if (!pdfDocument) {\n return;\n }\n const [objects, calculationOrder, docActions] = await Promise.all([\n pdfDocument.getFieldObjects(),\n pdfDocument.getCalculationOrderIds(),\n pdfDocument.getJSActions(),\n ]);\n\n if (!objects && !docActions) {\n // No FieldObjects or JavaScript actions were found in the document.\n await this._destroyScripting();\n return;\n }\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the data resolved.\n }\n try {\n this._scripting = this._createScripting();\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n this._internalEvents.set(\"updatefromsandbox\", event => {\n if (event?.source !== window) {\n return;\n }\n this._updateFromSandbox(event.detail);\n });\n this._internalEvents.set(\"dispatcheventinsandbox\", event => {\n this._scripting?.dispatchEventInSandbox(event.detail);\n });\n\n this._internalEvents.set(\"pagechanging\", ({ pageNumber, previous }) => {\n if (pageNumber === previous) {\n return; // The current page didn't change.\n }\n this._dispatchPageClose(previous);\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagerendered\", ({ pageNumber }) => {\n if (!this._pageOpenPending.has(pageNumber)) {\n return; // No pending \"PageOpen\" event for the newly rendered page.\n }\n if (pageNumber !== this._pdfViewer.currentPageNumber) {\n return; // The newly rendered page is no longer the current one.\n }\n this._dispatchPageOpen(pageNumber);\n });\n this._internalEvents.set(\"pagesdestroy\", async event => {\n await this._dispatchPageClose(this._pdfViewer.currentPageNumber);\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillClose\",\n });\n\n this._closeCapability?.resolve();\n });\n\n this._domEvents.set(\"mousedown\", event => {\n this._mouseState.isDown = true;\n });\n this._domEvents.set(\"mouseup\", event => {\n this._mouseState.isDown = false;\n });\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._on(name, listener);\n }\n for (const [name, listener] of this._domEvents) {\n window.addEventListener(name, listener, true);\n }\n\n try {\n const docProperties = await this._getDocProperties();\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the properties resolved.\n }\n\n await this._scripting.createSandbox({\n objects,\n calculationOrder,\n appInfo: {\n platform: navigator.platform,\n language: navigator.language,\n },\n docInfo: {\n ...docProperties,\n actions: docActions,\n },\n });\n\n this._eventBus.dispatch(\"sandboxcreated\", { source: this });\n } catch (error) {\n console.error(`PDFScriptingManager.setDocument: \"${error?.message}\".`);\n\n await this._destroyScripting();\n return;\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"Open\",\n });\n await this._dispatchPageOpen(\n this._pdfViewer.currentPageNumber,\n /* initialize = */ true\n );\n\n // Defer this slightly, to ensure that scripting is *fully* initialized.\n Promise.resolve().then(() => {\n if (pdfDocument === this._pdfDocument) {\n this._ready = true;\n }\n });\n }\n\n async dispatchWillSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillSave\",\n });\n }\n\n async dispatchDidSave(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidSave\",\n });\n }\n\n async dispatchWillPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"WillPrint\",\n });\n }\n\n async dispatchDidPrint(detail) {\n return this._scripting?.dispatchEventInSandbox({\n id: \"doc\",\n name: \"DidPrint\",\n });\n }\n\n get mouseState() {\n return this._mouseState;\n }\n\n get destroyPromise() {\n return this._destroyCapability?.promise || null;\n }\n\n get ready() {\n return this._ready;\n }\n\n /**\n * @private\n */\n get _internalEvents() {\n return shadow(this, \"_internalEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _domEvents() {\n return shadow(this, \"_domEvents\", new Map());\n }\n\n /**\n * @private\n */\n get _pageOpenPending() {\n return shadow(this, \"_pageOpenPending\", new Set());\n }\n\n /**\n * @private\n */\n get _visitedPages() {\n return shadow(this, \"_visitedPages\", new Map());\n }\n\n /**\n * @private\n */\n async _updateFromSandbox(detail) {\n // Ignore some events, see below, that don't make sense in PresentationMode.\n const isInPresentationMode =\n this._pdfViewer.isInPresentationMode ||\n this._pdfViewer.isChangingPresentationMode;\n\n const { id, siblings, command, value } = detail;\n if (!id) {\n switch (command) {\n case \"clear\":\n console.clear();\n break;\n case \"error\":\n console.error(value);\n break;\n case \"layout\":\n if (isInPresentationMode) {\n return;\n }\n const modes = apiPageLayoutToViewerModes(value);\n this._pdfViewer.spreadMode = modes.spreadMode;\n break;\n case \"page-num\":\n this._pdfViewer.currentPageNumber = value + 1;\n break;\n case \"print\":\n await this._pdfViewer.pagesPromise;\n this._eventBus.dispatch(\"print\", { source: this });\n break;\n case \"println\":\n console.log(value);\n break;\n case \"zoom\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.currentScaleValue = value;\n break;\n case \"SaveAs\":\n this._eventBus.dispatch(\"save\", { source: this });\n break;\n case \"FirstPage\":\n this._pdfViewer.currentPageNumber = 1;\n break;\n case \"LastPage\":\n this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;\n break;\n case \"NextPage\":\n this._pdfViewer.nextPage();\n break;\n case \"PrevPage\":\n this._pdfViewer.previousPage();\n break;\n case \"ZoomViewIn\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.increaseScale();\n break;\n case \"ZoomViewOut\":\n if (isInPresentationMode) {\n return;\n }\n this._pdfViewer.decreaseScale();\n break;\n }\n return;\n }\n\n if (isInPresentationMode) {\n if (detail.focus) {\n return;\n }\n }\n delete detail.id;\n delete detail.siblings;\n\n const ids = siblings ? [id, ...siblings] : [id];\n for (const elementId of ids) {\n const element = document.getElementById(elementId);\n if (element) {\n element.dispatchEvent(new CustomEvent(\"updatefromsandbox\", { detail }));\n } else {\n // The element hasn't been rendered yet, use the AnnotationStorage.\n this._pdfDocument?.annotationStorage.setValue(elementId, detail);\n }\n }\n }\n\n /**\n * @private\n */\n async _dispatchPageOpen(pageNumber, initialize = false) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (initialize) {\n this._closeCapability = createPromiseCapability();\n }\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n const pageView = this._pdfViewer.getPageView(/* index = */ pageNumber - 1);\n\n if (pageView?.renderingState !== RenderingStates.FINISHED) {\n this._pageOpenPending.add(pageNumber);\n return; // Wait for the page to finish rendering.\n }\n this._pageOpenPending.delete(pageNumber);\n\n const actionsPromise = (async () => {\n // Avoid sending, and thus serializing, the `actions` data more than once.\n const actions = await (!visitedPages.has(pageNumber)\n ? pageView.pdfPage?.getJSActions()\n : null);\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageOpen\",\n pageNumber,\n actions,\n });\n })();\n visitedPages.set(pageNumber, actionsPromise);\n }\n\n /**\n * @private\n */\n async _dispatchPageClose(pageNumber) {\n const pdfDocument = this._pdfDocument,\n visitedPages = this._visitedPages;\n\n if (!this._closeCapability) {\n return; // Scripting isn't fully initialized yet.\n }\n if (this._pageOpenPending.has(pageNumber)) {\n return; // The page is still rendering; no \"PageOpen\" event dispatched.\n }\n const actionsPromise = visitedPages.get(pageNumber);\n if (!actionsPromise) {\n return; // The \"PageClose\" event must be preceded by a \"PageOpen\" event.\n }\n visitedPages.set(pageNumber, null);\n\n // Ensure that the \"PageOpen\" event is dispatched first.\n await actionsPromise;\n if (pdfDocument !== this._pdfDocument) {\n return; // The document was closed while the actions resolved.\n }\n\n await this._scripting?.dispatchEventInSandbox({\n id: \"page\",\n name: \"PageClose\",\n pageNumber,\n });\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an {Object}\n * containing the necessary document properties; please find the expected\n * format in `PDFViewerApplication._scriptingDocProperties`.\n * @private\n */\n async _getDocProperties() {\n if (this._docPropertiesLookup) {\n return this._docPropertiesLookup(this._pdfDocument);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { docPropertiesLookup } = require(\"./generic_scripting.js\");\n\n return docPropertiesLookup(this._pdfDocument);\n }\n throw new Error(\"_getDocProperties: Unable to lookup properties.\");\n }\n\n /**\n * @private\n */\n _createScripting() {\n this._destroyCapability = createPromiseCapability();\n\n if (this._scripting) {\n throw new Error(\"_createScripting: Scripting already exists.\");\n }\n if (this._scriptingFactory) {\n return this._scriptingFactory.createScripting({\n sandboxBundleSrc: this._sandboxBundleSrc,\n });\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"COMPONENTS\")) {\n const { GenericScripting } = require(\"./generic_scripting.js\");\n\n return new GenericScripting(this._sandboxBundleSrc);\n }\n throw new Error(\"_createScripting: Cannot create scripting.\");\n }\n\n /**\n * @private\n */\n async _destroyScripting() {\n if (!this._scripting) {\n this._pdfDocument = null;\n\n this._destroyCapability?.resolve();\n return;\n }\n if (this._closeCapability) {\n await Promise.race([\n this._closeCapability.promise,\n new Promise(resolve => {\n // Avoid the scripting/sandbox-destruction hanging indefinitely.\n setTimeout(resolve, 1000);\n }),\n ]).catch(reason => {\n // Ignore any errors, to ensure that the sandbox is always destroyed.\n });\n this._closeCapability = null;\n }\n this._pdfDocument = null;\n\n try {\n await this._scripting.destroySandbox();\n } catch (ex) {}\n\n for (const [name, listener] of this._internalEvents) {\n this._eventBus._off(name, listener);\n }\n this._internalEvents.clear();\n\n for (const [name, listener] of this._domEvents) {\n window.removeEventListener(name, listener, true);\n }\n this._domEvents.clear();\n\n this._pageOpenPending.clear();\n this._visitedPages.clear();\n\n this._scripting = null;\n delete this._mouseState.isDown;\n this._ready = false;\n\n this._destroyCapability?.resolve();\n }\n}\n\nexport { PDFScriptingManager };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PresentationModeState,\n RenderingStates,\n SidebarView,\n} from \"./ui_utils.js\";\n\nconst UI_NOTIFICATION_CLASS = \"pdfSidebarNotification\";\n\n/**\n * @typedef {Object} PDFSidebarOptions\n * @property {PDFSidebarElements} elements - The DOM elements.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IL10n} l10n - The localization service.\n */\n\n/**\n * @typedef {Object} PDFSidebarElements\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} sidebarContainer - The sidebar container\n * (in which the views are placed).\n * @property {HTMLButtonElement} toggleButton - The button used for\n * opening/closing the sidebar.\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\n * the thumbnail view.\n * @property {HTMLButtonElement} outlineButton - The button used to show\n * the outline view.\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\n * the attachments view.\n * @property {HTMLButtonElement} layersButton - The button used to show\n * the layers view.\n * @property {HTMLDivElement} thumbnailView - The container in which\n * the thumbnails are placed.\n * @property {HTMLDivElement} outlineView - The container in which\n * the outline is placed.\n * @property {HTMLDivElement} attachmentsView - The container in which\n * the attachments are placed.\n * @property {HTMLDivElement} layersView - The container in which\n * the layers are placed.\n * @property {HTMLDivElement} outlineOptionsContainer - The container in which\n * the outline view-specific option button(s) are placed.\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\n * find the current outline item.\n */\n\nclass PDFSidebar {\n /**\n * @param {PDFSidebarOptions} options\n */\n constructor({ elements, pdfViewer, pdfThumbnailViewer, eventBus, l10n }) {\n this.isOpen = false;\n this.active = SidebarView.THUMBS;\n this.isInitialViewSet = false;\n\n /**\n * Callback used when the sidebar has been opened/closed, to ensure that\n * the viewers (PDFViewer/PDFThumbnailViewer) are updated correctly.\n */\n this.onToggled = null;\n\n this.pdfViewer = pdfViewer;\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n\n this.outerContainer = elements.outerContainer;\n this.sidebarContainer = elements.sidebarContainer;\n this.toggleButton = elements.toggleButton;\n\n this.thumbnailButton = elements.thumbnailButton;\n this.outlineButton = elements.outlineButton;\n this.attachmentsButton = elements.attachmentsButton;\n this.layersButton = elements.layersButton;\n\n this.thumbnailView = elements.thumbnailView;\n this.outlineView = elements.outlineView;\n this.attachmentsView = elements.attachmentsView;\n this.layersView = elements.layersView;\n\n this._outlineOptionsContainer = elements.outlineOptionsContainer;\n this._currentOutlineItemButton = elements.currentOutlineItemButton;\n\n this.eventBus = eventBus;\n this.l10n = l10n;\n\n this._addEventListeners();\n }\n\n reset() {\n this.isInitialViewSet = false;\n\n this._hideUINotification(/* reset = */ true);\n this.switchView(SidebarView.THUMBS);\n\n this.outlineButton.disabled = false;\n this.attachmentsButton.disabled = false;\n this.layersButton.disabled = false;\n this._currentOutlineItemButton.disabled = true;\n }\n\n /**\n * @type {number} One of the values in {SidebarView}.\n */\n get visibleView() {\n return this.isOpen ? this.active : SidebarView.NONE;\n }\n\n get isThumbnailViewVisible() {\n return this.isOpen && this.active === SidebarView.THUMBS;\n }\n\n get isOutlineViewVisible() {\n return this.isOpen && this.active === SidebarView.OUTLINE;\n }\n\n get isAttachmentsViewVisible() {\n return this.isOpen && this.active === SidebarView.ATTACHMENTS;\n }\n\n get isLayersViewVisible() {\n return this.isOpen && this.active === SidebarView.LAYERS;\n }\n\n /**\n * @param {number} view - The sidebar view that should become visible,\n * must be one of the values in {SidebarView}.\n */\n setInitialView(view = SidebarView.NONE) {\n if (this.isInitialViewSet) {\n return;\n }\n this.isInitialViewSet = true;\n\n // If the user has already manually opened the sidebar, immediately closing\n // it would be bad UX; also ignore the \"unknown\" sidebar view value.\n if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\n this._dispatchEvent();\n return;\n }\n // Prevent dispatching two back-to-back `sidebarviewchanged` events,\n // since `this._switchView` dispatched the event if the view changed.\n if (!this._switchView(view, /* forceOpen */ true)) {\n this._dispatchEvent();\n }\n }\n\n /**\n * @param {number} view - The sidebar view that should be switched to,\n * must be one of the values in {SidebarView}.\n * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\n * The default value is `false`.\n */\n switchView(view, forceOpen = false) {\n this._switchView(view, forceOpen);\n }\n\n /**\n * @returns {boolean} Indicating if `this._dispatchEvent` was called.\n * @private\n */\n _switchView(view, forceOpen = false) {\n const isViewChanged = view !== this.active;\n let shouldForceRendering = false;\n\n switch (view) {\n case SidebarView.NONE:\n if (this.isOpen) {\n this.close();\n return true; // Closing will trigger rendering and dispatch the event.\n }\n return false;\n case SidebarView.THUMBS:\n if (this.isOpen && isViewChanged) {\n shouldForceRendering = true;\n }\n break;\n case SidebarView.OUTLINE:\n if (this.outlineButton.disabled) {\n return false;\n }\n break;\n case SidebarView.ATTACHMENTS:\n if (this.attachmentsButton.disabled) {\n return false;\n }\n break;\n case SidebarView.LAYERS:\n if (this.layersButton.disabled) {\n return false;\n }\n break;\n default:\n console.error(`PDFSidebar._switchView: \"${view}\" is not a valid view.`);\n return false;\n }\n // Update the active view *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = view;\n\n const isThumbs = view === SidebarView.THUMBS,\n isOutline = view === SidebarView.OUTLINE,\n isAttachments = view === SidebarView.ATTACHMENTS,\n isLayers = view === SidebarView.LAYERS;\n\n // Update the CSS classes (and aria attributes), for all buttons...\n this.thumbnailButton.classList.toggle(\"toggled\", isThumbs);\n this.outlineButton.classList.toggle(\"toggled\", isOutline);\n this.attachmentsButton.classList.toggle(\"toggled\", isAttachments);\n this.layersButton.classList.toggle(\"toggled\", isLayers);\n\n this.thumbnailButton.setAttribute(\"aria-checked\", isThumbs);\n this.outlineButton.setAttribute(\"aria-checked\", isOutline);\n this.attachmentsButton.setAttribute(\"aria-checked\", isAttachments);\n this.layersButton.setAttribute(\"aria-checked\", isLayers);\n // ... and for all views.\n this.thumbnailView.classList.toggle(\"hidden\", !isThumbs);\n this.outlineView.classList.toggle(\"hidden\", !isOutline);\n this.attachmentsView.classList.toggle(\"hidden\", !isAttachments);\n this.layersView.classList.toggle(\"hidden\", !isLayers);\n\n // Finally, update view-specific CSS classes.\n this._outlineOptionsContainer.classList.toggle(\"hidden\", !isOutline);\n\n if (forceOpen && !this.isOpen) {\n this.open();\n return true; // Opening will trigger rendering and dispatch the event.\n }\n if (shouldForceRendering) {\n this._updateThumbnailViewer();\n this._forceRendering();\n }\n if (isViewChanged) {\n this._dispatchEvent();\n }\n return isViewChanged;\n }\n\n open() {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n\n this.outerContainer.classList.add(\"sidebarMoving\", \"sidebarOpen\");\n\n if (this.active === SidebarView.THUMBS) {\n this._updateThumbnailViewer();\n }\n this._forceRendering();\n this._dispatchEvent();\n\n this._hideUINotification();\n }\n\n close() {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n\n this.outerContainer.classList.add(\"sidebarMoving\");\n this.outerContainer.classList.remove(\"sidebarOpen\");\n\n this._forceRendering();\n this._dispatchEvent();\n }\n\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch(\"sidebarviewchanged\", {\n source: this,\n view: this.visibleView,\n });\n }\n\n /**\n * @private\n */\n _forceRendering() {\n if (this.onToggled) {\n this.onToggled();\n } else {\n // Fallback\n this.pdfViewer.forceRendering();\n this.pdfThumbnailViewer.forceRendering();\n }\n }\n\n /**\n * @private\n */\n _updateThumbnailViewer() {\n const { pdfViewer, pdfThumbnailViewer } = this;\n\n // Use the rendered pages to set the corresponding thumbnail images.\n const pagesCount = pdfViewer.pagesCount;\n for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n const pageView = pdfViewer.getPageView(pageIndex);\n if (pageView?.renderingState === RenderingStates.FINISHED) {\n const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n }\n pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n }\n\n /**\n * @private\n */\n _showUINotification() {\n this.l10n.get(\"toggle_sidebar_notification2.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n\n if (!this.isOpen) {\n // Only show the notification on the `toggleButton` if the sidebar is\n // currently closed, to avoid unnecessarily bothering the user.\n this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n }\n }\n\n /**\n * @private\n */\n _hideUINotification(reset = false) {\n if (this.isOpen || reset) {\n // Only hide the notification on the `toggleButton` if the sidebar is\n // currently open, or when the current PDF document is being closed.\n this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n }\n\n if (reset) {\n this.l10n.get(\"toggle_sidebar.title\").then(msg => {\n this.toggleButton.title = msg;\n });\n }\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.sidebarContainer.addEventListener(\"transitionend\", evt => {\n if (evt.target === this.sidebarContainer) {\n this.outerContainer.classList.remove(\"sidebarMoving\");\n }\n });\n\n this.toggleButton.addEventListener(\"click\", () => {\n this.toggle();\n });\n\n // Buttons for switching views.\n this.thumbnailButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.THUMBS);\n });\n\n this.outlineButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.OUTLINE);\n });\n this.outlineButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"toggleoutlinetree\", { source: this });\n });\n\n this.attachmentsButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.ATTACHMENTS);\n });\n\n this.layersButton.addEventListener(\"click\", () => {\n this.switchView(SidebarView.LAYERS);\n });\n this.layersButton.addEventListener(\"dblclick\", () => {\n this.eventBus.dispatch(\"resetlayers\", { source: this });\n });\n\n // Buttons for view-specific options.\n this._currentOutlineItemButton.addEventListener(\"click\", () => {\n this.eventBus.dispatch(\"currentoutlineitem\", { source: this });\n });\n\n // Disable/enable views.\n const onTreeLoaded = (count, button, view) => {\n button.disabled = !count;\n\n if (count) {\n this._showUINotification();\n } else if (this.active === view) {\n // If the `view` was opened by the user during document load,\n // switch away from it if it turns out to be empty.\n this.switchView(SidebarView.THUMBS);\n }\n };\n\n this.eventBus._on(\"outlineloaded\", evt => {\n onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\n\n evt.currentOutlineItemPromise.then(enabled => {\n if (!this.isInitialViewSet) {\n return;\n }\n this._currentOutlineItemButton.disabled = !enabled;\n });\n });\n\n this.eventBus._on(\"attachmentsloaded\", evt => {\n onTreeLoaded(\n evt.attachmentsCount,\n this.attachmentsButton,\n SidebarView.ATTACHMENTS\n );\n });\n\n this.eventBus._on(\"layersloaded\", evt => {\n onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\n });\n\n // Update the thumbnailViewer, if visible, when exiting presentation mode.\n this.eventBus._on(\"presentationmodechanged\", evt => {\n if (\n evt.state === PresentationModeState.NORMAL &&\n this.isThumbnailViewVisible\n ) {\n this._updateThumbnailViewer();\n }\n });\n }\n}\n\nexport { PDFSidebar };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst SIDEBAR_WIDTH_VAR = \"--sidebar-width\";\nconst SIDEBAR_MIN_WIDTH = 200; // pixels\nconst SIDEBAR_RESIZING_CLASS = \"sidebarResizing\";\n\n/**\n * @typedef {Object} PDFSidebarResizerOptions\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\n * order to adjust the width of the sidebar.\n */\n\nclass PDFSidebarResizer {\n /**\n * @param {PDFSidebarResizerOptions} options\n * @param {EventBus} eventBus - The application event bus.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.isRTL = false;\n this.sidebarOpen = false;\n this.doc = document.documentElement;\n this._width = null;\n this._outerContainerWidth = null;\n this._boundEvents = Object.create(null);\n\n this.outerContainer = options.outerContainer;\n this.resizer = options.resizer;\n this.eventBus = eventBus;\n\n l10n.getDirection().then(dir => {\n this.isRTL = dir === \"rtl\";\n });\n this._addEventListeners();\n }\n\n /**\n * @type {number}\n */\n get outerContainerWidth() {\n return (this._outerContainerWidth ||= this.outerContainer.clientWidth);\n }\n\n /**\n * @private\n * returns {boolean} Indicating if the sidebar width was updated.\n */\n _updateWidth(width = 0) {\n // Prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n const maxWidth = Math.floor(this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < SIDEBAR_MIN_WIDTH) {\n width = SIDEBAR_MIN_WIDTH;\n }\n // Only update the UI when the sidebar width did in fact change.\n if (width === this._width) {\n return false;\n }\n this._width = width;\n this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\n return true;\n }\n\n /**\n * @private\n */\n _mouseMove(evt) {\n let width = evt.clientX;\n // For sidebar resizing to work correctly in RTL mode, invert the width.\n if (this.isRTL) {\n width = this.outerContainerWidth - width;\n }\n this._updateWidth(width);\n }\n\n /**\n * @private\n */\n _mouseUp(evt) {\n // Re-enable the `transition-duration` rules when sidebar resizing ends...\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // ... and ensure that rendering will always be triggered.\n this.eventBus.dispatch(\"resize\", { source: this });\n\n const _boundEvents = this._boundEvents;\n window.removeEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.removeEventListener(\"mouseup\", _boundEvents.mouseUp);\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n const _boundEvents = this._boundEvents;\n _boundEvents.mouseMove = this._mouseMove.bind(this);\n _boundEvents.mouseUp = this._mouseUp.bind(this);\n\n this.resizer.addEventListener(\"mousedown\", evt => {\n if (evt.button !== 0) {\n return;\n }\n // Disable the `transition-duration` rules when sidebar resizing begins,\n // in order to improve responsiveness and to avoid visual glitches.\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n\n window.addEventListener(\"mousemove\", _boundEvents.mouseMove);\n window.addEventListener(\"mouseup\", _boundEvents.mouseUp);\n });\n\n this.eventBus._on(\"sidebarviewchanged\", evt => {\n this.sidebarOpen = !!evt?.view;\n });\n\n this.eventBus._on(\"resize\", evt => {\n // When the *entire* viewer is resized, such that it becomes narrower,\n // ensure that the sidebar doesn't end up being too wide.\n if (evt?.source !== window) {\n return;\n }\n // Always reset the cached width when the viewer is resized.\n this._outerContainerWidth = null;\n\n if (!this._width) {\n // The sidebar hasn't been resized, hence no need to adjust its width.\n return;\n }\n // NOTE: If the sidebar is closed, we don't need to worry about\n // visual glitches nor ensure that rendering is triggered.\n if (!this.sidebarOpen) {\n this._updateWidth(this._width);\n return;\n }\n this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n const updated = this._updateWidth(this._width);\n\n Promise.resolve().then(() => {\n this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n // Trigger rendering if the sidebar width changed, to avoid\n // depending on the order in which 'resize' events are handled.\n if (updated) {\n this.eventBus.dispatch(\"resize\", { source: this });\n }\n });\n });\n }\n}\n\nexport { PDFSidebarResizer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n getVisibleElements,\n isValidRotation,\n RenderingStates,\n scrollIntoView,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { PDFThumbnailView, TempImageFactory } from \"./pdf_thumbnail_view.js\";\n\nconst THUMBNAIL_SCROLL_MARGIN = -19;\nconst THUMBNAIL_SELECTED_CLASS = \"selected\";\n\n/**\n * @typedef {Object} PDFThumbnailViewerOptions\n * @property {HTMLDivElement} container - The container for the thumbnail\n * elements.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * Viewer control to display thumbnails for pages in a PDF document.\n */\nclass PDFThumbnailViewer {\n /**\n * @param {PDFThumbnailViewerOptions} options\n */\n constructor({ container, eventBus, linkService, renderingQueue, l10n }) {\n this.container = container;\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n this.l10n = l10n;\n\n this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));\n this._resetView();\n\n eventBus._on(\"optionalcontentconfigchanged\", () => {\n // Ensure that the thumbnails always render with the *default* optional\n // content configuration.\n this._setImageDisabled = true;\n });\n }\n\n /**\n * @private\n */\n _scrollUpdated() {\n this.renderingQueue.renderHighestPriority();\n }\n\n getThumbnail(index) {\n return this._thumbnails[index];\n }\n\n /**\n * @private\n */\n _getVisibleThumbs() {\n return getVisibleElements({\n scrollEl: this.container,\n views: this._thumbnails,\n });\n }\n\n scrollThumbnailIntoView(pageNumber) {\n if (!this.pdfDocument) {\n return;\n }\n const thumbnailView = this._thumbnails[pageNumber - 1];\n\n if (!thumbnailView) {\n console.error('scrollThumbnailIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n\n if (pageNumber !== this._currentPageNumber) {\n const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\n // Remove the highlight from the previous thumbnail...\n prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\n // ... and add the highlight to the new thumbnail.\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n }\n const { first, last, views } = this._getVisibleThumbs();\n\n // If the thumbnail isn't currently visible, scroll it into view.\n if (views.length > 0) {\n let shouldScroll = false;\n if (pageNumber <= first.id || pageNumber >= last.id) {\n shouldScroll = true;\n } else {\n for (const { id, percent } of views) {\n if (id !== pageNumber) {\n continue;\n }\n shouldScroll = percent < 100;\n break;\n }\n }\n if (shouldScroll) {\n scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\n }\n }\n\n this._currentPageNumber = pageNumber;\n }\n\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid thumbnails rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const updateArgs = { rotation };\n for (const thumbnail of this._thumbnails) {\n thumbnail.update(updateArgs);\n }\n }\n\n cleanup() {\n for (const thumbnail of this._thumbnails) {\n if (thumbnail.renderingState !== RenderingStates.FINISHED) {\n thumbnail.reset();\n }\n }\n TempImageFactory.destroyCanvas();\n }\n\n /**\n * @private\n */\n _resetView() {\n this._thumbnails = [];\n this._currentPageNumber = 1;\n this._pageLabels = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._setImageDisabled = false;\n\n // Remove the thumbnails from the DOM.\n this.container.textContent = \"\";\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const firstPagePromise = pdfDocument.getPage(1);\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n\n firstPagePromise\n .then(firstPdfPage => {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n\n const pagesCount = pdfDocument.numPages;\n const viewport = firstPdfPage.getViewport({ scale: 1 });\n const checkSetImageDisabled = () => {\n return this._setImageDisabled;\n };\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const thumbnail = new PDFThumbnailView({\n container: this.container,\n id: pageNum,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n linkService: this.linkService,\n renderingQueue: this.renderingQueue,\n checkSetImageDisabled,\n l10n: this.l10n,\n });\n this._thumbnails.push(thumbnail);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstThumbnailView = this._thumbnails[0];\n if (firstThumbnailView) {\n firstThumbnailView.setPdfPage(firstPdfPage);\n }\n\n // Ensure that the current thumbnail is always highlighted on load.\n const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\n thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\n })\n .catch(reason => {\n console.error(\"Unable to initialize thumbnail viewer\", reason);\n });\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (const thumbnail of this._thumbnails) {\n thumbnail.cancelRendering();\n }\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\");\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFThumbnailView` instances.\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n /**\n * @param {PDFThumbnailView} thumbView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(thumbView) {\n if (thumbView.pdfPage) {\n return thumbView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(thumbView.id);\n if (!thumbView.pdfPage) {\n thumbView.setPdfPage(pdfPage);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for thumb view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this._thumbnails.length) {\n return false;\n }\n return this.scroll.down;\n }\n\n forceRendering() {\n const visibleThumbs = this._getVisibleThumbs();\n const scrollAhead = this.#getScrollAhead(visibleThumbs);\n const thumbView = this.renderingQueue.getHighestPriority(\n visibleThumbs,\n this._thumbnails,\n scrollAhead\n );\n if (thumbView) {\n this.#ensurePdfPageLoaded(thumbView).then(() => {\n this.renderingQueue.renderView(thumbView);\n });\n return true;\n }\n return false;\n }\n}\n\nexport { PDFThumbnailViewer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport { OutputScale, RenderingStates } from \"./ui_utils.js\";\nimport { RenderingCancelledException } from \"pdfjs-lib\";\n\nconst DRAW_UPSCALE_FACTOR = 2; // See comment in `PDFThumbnailView.draw` below.\nconst MAX_NUM_SCALING_STEPS = 3;\nconst THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px\nconst THUMBNAIL_WIDTH = 98; // px\n\n/**\n * @typedef {Object} PDFThumbnailViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {number} id - The thumbnail's unique ID (normally its number).\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {function} checkSetImageDisabled\n * @property {IL10n} l10n - Localization service.\n */\n\nclass TempImageFactory {\n static #tempCanvas = null;\n\n static getCanvas(width, height) {\n const tempCanvas = (this.#tempCanvas ||= document.createElement(\"canvas\"));\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n // Since this is a temporary canvas, we need to fill it with a white\n // background ourselves. `_getPageDrawContext` uses CSS rules for this.\n const ctx = tempCanvas.getContext(\"2d\", { alpha: false });\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n return [tempCanvas, tempCanvas.getContext(\"2d\")];\n }\n\n static destroyCanvas() {\n const tempCanvas = this.#tempCanvas;\n if (tempCanvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tempCanvas.width = 0;\n tempCanvas.height = 0;\n }\n this.#tempCanvas = null;\n }\n}\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFThumbnailView {\n /**\n * @param {PDFThumbnailViewOptions} options\n */\n constructor({\n container,\n id,\n defaultViewport,\n optionalContentConfigPromise,\n linkService,\n renderingQueue,\n checkSetImageDisabled,\n l10n,\n }) {\n this.id = id;\n this.renderingId = \"thumbnail\" + id;\n this.pageLabel = null;\n\n this.pdfPage = null;\n this.rotation = 0;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise = optionalContentConfigPromise || null;\n\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n\n this.renderTask = null;\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._checkSetImageDisabled =\n checkSetImageDisabled ||\n function () {\n return false;\n };\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasWidth = THUMBNAIL_WIDTH;\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.l10n = l10n;\n\n const anchor = document.createElement(\"a\");\n anchor.href = linkService.getAnchorUrl(\"#page=\" + id);\n this._thumbPageTitle.then(msg => {\n anchor.title = msg;\n });\n anchor.onclick = function () {\n linkService.goToPage(id);\n return false;\n };\n this.anchor = anchor;\n\n const div = document.createElement(\"div\");\n div.className = \"thumbnail\";\n div.setAttribute(\"data-page-number\", this.id);\n this.div = div;\n\n const ring = document.createElement(\"div\");\n ring.className = \"thumbnailSelectionRing\";\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n this.ring = ring;\n\n div.appendChild(ring);\n anchor.appendChild(div);\n container.appendChild(anchor);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\n this.reset();\n }\n\n reset() {\n this.cancelRendering();\n this.renderingState = RenderingStates.INITIAL;\n\n const pageWidth = this.viewport.width,\n pageHeight = this.viewport.height,\n pageRatio = pageWidth / pageHeight;\n\n this.canvasHeight = (this.canvasWidth / pageRatio) | 0;\n this.scale = this.canvasWidth / pageWidth;\n\n this.div.removeAttribute(\"data-loaded\");\n const ring = this.ring;\n ring.textContent = \"\"; // Remove the thumbnail from the DOM.\n const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + \"px\";\n ring.style.height = this.canvasHeight + borderAdjustment + \"px\";\n\n if (this.canvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n if (this.image) {\n this.image.removeAttribute(\"src\");\n delete this.image;\n }\n }\n\n update({ rotation = null }) {\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: 1,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering() {\n if (this.renderTask) {\n this.renderTask.cancel();\n this.renderTask = null;\n }\n this.resume = null;\n }\n\n /**\n * @private\n */\n _getPageDrawContext(upscaleFactor = 1) {\n // Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\n // until rendering/image conversion is complete, to avoid display issues.\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = new OutputScale();\n\n canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;\n canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;\n\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n\n return { ctx, canvas, transform };\n }\n\n /**\n * @private\n */\n _convertCanvasToImage(canvas) {\n if (this.renderingState !== RenderingStates.FINISHED) {\n throw new Error(\"_convertCanvasToImage: Rendering has not finished.\");\n }\n const reducedCanvas = this._reduceImage(canvas);\n\n const image = document.createElement(\"img\");\n image.className = \"thumbnailImage\";\n this._thumbPageCanvas.then(msg => {\n image.setAttribute(\"aria-label\", msg);\n });\n image.style.width = this.canvasWidth + \"px\";\n image.style.height = this.canvasHeight + \"px\";\n\n image.src = reducedCanvas.toDataURL();\n this.image = image;\n\n this.div.setAttribute(\"data-loaded\", true);\n this.ring.appendChild(image);\n\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n reducedCanvas.width = 0;\n reducedCanvas.height = 0;\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n return Promise.resolve();\n }\n const { pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n const finishRenderTask = async (error = null) => {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n return;\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n\n if (error) {\n throw error;\n }\n };\n\n // Render the thumbnail at a larger size and downsize the canvas (similar\n // to `setImage`), to improve consistency between thumbnails created by\n // the `draw` and `setImage` methods (fixes issue 8233).\n // NOTE: To primarily avoid increasing memory usage too much, but also to\n // reduce downsizing overhead, we purposely limit the up-scaling factor.\n const { ctx, canvas, transform } =\n this._getPageDrawContext(DRAW_UPSCALE_FACTOR);\n const drawViewport = this.viewport.clone({\n scale: DRAW_UPSCALE_FACTOR * this.scale,\n });\n const renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: drawViewport,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n };\n const renderTask = (this.renderTask = pdfPage.render(renderContext));\n renderTask.onContinue = renderContinueCallback;\n\n const resultPromise = renderTask.promise.then(\n function () {\n return finishRenderTask(null);\n },\n function (error) {\n return finishRenderTask(error);\n }\n );\n resultPromise.finally(() => {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n\n // Only trigger cleanup, once rendering has finished, when the current\n // pageView is *not* cached on the `BaseViewer`-instance.\n const pageCached = this.linkService.isPageCached(this.id);\n if (!pageCached) {\n this.pdfPage?.cleanup();\n }\n });\n\n return resultPromise;\n }\n\n setImage(pageView) {\n if (this._checkSetImageDisabled()) {\n return;\n }\n if (this.renderingState !== RenderingStates.INITIAL) {\n return;\n }\n const { canvas, pdfPage } = pageView;\n if (!canvas) {\n return;\n }\n if (!this.pdfPage) {\n this.setPdfPage(pdfPage);\n }\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage(canvas);\n }\n\n /**\n * @private\n */\n _reduceImage(img) {\n const { ctx, canvas } = this._getPageDrawContext();\n\n if (img.width <= 2 * canvas.width) {\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n // drawImage does an awful job of rescaling the image, doing it gradually.\n let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\n reducedWidth,\n reducedHeight\n );\n\n while (reducedWidth > img.width || reducedHeight > img.height) {\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n reducedImageCtx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n reducedWidth,\n reducedHeight\n );\n while (reducedWidth > 2 * canvas.width) {\n reducedImageCtx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n reducedWidth >> 1,\n reducedHeight >> 1\n );\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n ctx.drawImage(\n reducedImage,\n 0,\n 0,\n reducedWidth,\n reducedHeight,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n return canvas;\n }\n\n get _thumbPageTitle() {\n return this.l10n.get(\"thumb_page_title\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n get _thumbPageCanvas() {\n return this.l10n.get(\"thumb_page_canvas\", {\n page: this.pageLabel ?? this.id,\n });\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n this._thumbPageTitle.then(msg => {\n this.anchor.title = msg;\n });\n\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n\n this._thumbPageCanvas.then(msg => {\n this.image?.setAttribute(\"aria-label\", msg);\n });\n }\n}\n\nexport { PDFThumbnailView, TempImageFactory };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { BaseViewer } from \"./base_viewer.js\";\n\nclass PDFViewer extends BaseViewer {}\n\nclass PDFSinglePageViewer extends BaseViewer {\n _resetView() {\n super._resetView();\n this._scrollMode = ScrollMode.PAGE;\n this._spreadMode = SpreadMode.NONE;\n }\n\n // eslint-disable-next-line accessor-pairs\n set scrollMode(mode) {}\n\n _updateScrollMode() {}\n\n // eslint-disable-next-line accessor-pairs\n set spreadMode(mode) {}\n\n _updateSpreadMode() {}\n}\n\nexport { PDFSinglePageViewer, PDFViewer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IPDFXfaLayerFactory} IPDFXfaLayerFactory */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PermissionFlag,\n PixelsPerInch,\n version,\n} from \"pdfjs-lib\";\nimport {\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n PresentationModeState,\n RendererType,\n RenderingStates,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n} from \"./ui_utils.js\";\nimport { AnnotationLayerBuilder } from \"./annotation_layer_builder.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\nimport { PDFPageView } from \"./pdf_page_view.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { StructTreeLayerBuilder } from \"./struct_tree_layer_builder.js\";\nimport { TextHighlighter } from \"./text_highlighter.js\";\nimport { TextLayerBuilder } from \"./text_layer_builder.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nconst DEFAULT_CACHE_SIZE = 10;\nconst ENABLE_PERMISSIONS_CLASS = \"enablePermissions\";\n\nconst PagesCountLimit = {\n FORCE_SCROLL_MODE_PAGE: 15000,\n FORCE_LAZY_PAGE_INIT: 7500,\n PAUSE_EAGER_PAGE_INIT: 250,\n};\n\n/**\n * @typedef {Object} PDFViewerOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} [viewer] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {IDownloadManager} [downloadManager] - The download manager\n * component.\n * @property {PDFFindController} [findController] - The find controller\n * component.\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\n * component.\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\n * @property {boolean} [removePageBorders] - Removes the border shadow around\n * the pages. The default value is `false`.\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * mainly for annotation icons. Include trailing slash.\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\n * landscape pages upon printing. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\n * when they exist. The default value is `false`.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n */\n\nclass PDFPageViewBuffer {\n // Here we rely on the fact that `Set`s preserve the insertion order.\n #buf = new Set();\n\n #size = 0;\n\n constructor(size) {\n this.#size = size;\n }\n\n push(view) {\n const buf = this.#buf;\n if (buf.has(view)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n }\n buf.add(view);\n\n if (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n /**\n * After calling resize, the size of the buffer will be `newSize`.\n * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\n * push to the back of the buffer, delaying their destruction. The size of\n * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\n * is larger than `newSize`, some of those pages will be destroyed anyway.\n */\n resize(newSize, idsToKeep = null) {\n this.#size = newSize;\n\n const buf = this.#buf;\n if (idsToKeep) {\n const ii = buf.size;\n let i = 1;\n for (const view of buf) {\n if (idsToKeep.has(view.id)) {\n buf.delete(view); // Move the view to the \"end\" of the buffer.\n buf.add(view);\n }\n if (++i > ii) {\n break;\n }\n }\n }\n\n while (buf.size > this.#size) {\n this.#destroyFirstView();\n }\n }\n\n has(view) {\n return this.#buf.has(view);\n }\n\n [Symbol.iterator]() {\n return this.#buf.keys();\n }\n\n #destroyFirstView() {\n const firstView = this.#buf.keys().next().value;\n\n firstView?.destroy();\n this.#buf.delete(firstView);\n }\n}\n\n/**\n * Simple viewer control to display PDF content/pages.\n *\n * @implements {IPDFAnnotationLayerFactory}\n * @implements {IPDFStructTreeLayerFactory}\n * @implements {IPDFTextLayerFactory}\n * @implements {IPDFXfaLayerFactory}\n */\nclass BaseViewer {\n #buffer = null;\n\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n #previousAnnotationMode = null;\n\n #enablePermissions = false;\n\n #previousContainerHeight = 0;\n\n #scrollModePageState = null;\n\n #onVisibilityChange = null;\n\n /**\n * @param {PDFViewerOptions} options\n */\n constructor(options) {\n if (this.constructor === BaseViewer) {\n throw new Error(\"Cannot initialize BaseViewer.\");\n }\n const viewerVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n if (version !== viewerVersion) {\n throw new Error(\n `The API version \"${version}\" does not match the Viewer version \"${viewerVersion}\".`\n );\n }\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ) {\n if (\n !(\n this.container?.tagName.toUpperCase() === \"DIV\" &&\n this.viewer?.tagName.toUpperCase() === \"DIV\"\n )\n ) {\n throw new Error(\"Invalid `container` and/or `viewer` option.\");\n }\n\n if (\n this.container.offsetParent &&\n getComputedStyle(this.container).position !== \"absolute\"\n ) {\n throw new Error(\"The `container` must be absolutely positioned.\");\n }\n }\n this.eventBus = options.eventBus;\n this.linkService = options.linkService || new SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.findController = options.findController || null;\n this._scriptingManager = options.scriptingManager || null;\n this.removePageBorders = options.removePageBorders || false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels;\n this.l10n = options.l10n || NullL10n;\n this.#enablePermissions = options.enablePermissions || false;\n this.pageColors = options.pageColors || null;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n if (\n options.pageColors &&\n (!CSS.supports(\"color\", options.pageColors.background) ||\n !CSS.supports(\"color\", options.pageColors.foreground))\n ) {\n if (options.pageColors.background || options.pageColors.foreground) {\n console.warn(\n \"Ignoring `pageColors`-option, since the browser doesn't support the values used.\"\n );\n }\n this.pageColors = null;\n }\n }\n\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n // Custom rendering queue is not specified, using default one\n this.renderingQueue = new PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n this._doc = document.documentElement;\n\n this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = PresentationModeState.UNKNOWN;\n this._onBeforeDraw = this._onAfterDraw = null;\n this._resetView();\n\n if (this.removePageBorders) {\n this.viewer.classList.add(\"removePageBorders\");\n }\n this.updateContainerHeightCss();\n // Defer the dispatching of this event, to give other viewer components\n // time to initialize *and* register 'baseviewerinit' event listeners.\n Promise.resolve().then(() => {\n this.eventBus.dispatch(\"baseviewerinit\", { source: this });\n });\n }\n\n get pagesCount() {\n return this._pages.length;\n }\n\n getPageView(index) {\n return this._pages[index];\n }\n\n /**\n * @type {boolean} - True if all {PDFPageView} objects are initialized.\n */\n get pageViewsReady() {\n if (!this._pagesCapability.settled) {\n return false;\n }\n // Prevent printing errors when 'disableAutoFetch' is set, by ensuring\n // that *all* pages have in fact been completely loaded.\n return this._pages.every(function (pageView) {\n return pageView?.pdfPage;\n });\n }\n\n /**\n * @type {boolean}\n */\n get renderForms() {\n return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\n }\n\n /**\n * @type {boolean}\n */\n get enableScripting() {\n return !!this._scriptingManager;\n }\n\n /**\n * @type {number}\n */\n get currentPageNumber() {\n return this._currentPageNumber;\n }\n\n /**\n * @param {number} val - The page number.\n */\n set currentPageNumber(val) {\n if (!Number.isInteger(val)) {\n throw new Error(\"Invalid page number.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageNumber: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @returns {boolean} Whether the pageNumber is valid (within bounds).\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this.#resetCurrentPageView();\n }\n return true;\n }\n\n if (!(0 < val && val <= this.pagesCount)) {\n return false;\n }\n const previous = this._currentPageNumber;\n this._currentPageNumber = val;\n\n this.eventBus.dispatch(\"pagechanging\", {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels?.[val - 1] ?? null,\n previous,\n });\n\n if (resetCurrentPageView) {\n this.#resetCurrentPageView();\n }\n return true;\n }\n\n /**\n * @type {string|null} Returns the current page label, or `null` if no page\n * labels exist.\n */\n get currentPageLabel() {\n return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\n }\n\n /**\n * @param {string} val - The page label.\n */\n set currentPageLabel(val) {\n if (!this.pdfDocument) {\n return;\n }\n let page = val | 0; // Fallback page number.\n if (this._pageLabels) {\n const i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n page = i + 1;\n }\n }\n // The intent can be to just reset a scroll position and/or scale.\n if (!this._setCurrentPageNumber(page, /* resetCurrentPageView = */ true)) {\n console.error(`currentPageLabel: \"${val}\" is not a valid page.`);\n }\n }\n\n /**\n * @type {number}\n */\n get currentScale() {\n return this._currentScale !== UNKNOWN_SCALE\n ? this._currentScale\n : DEFAULT_SCALE;\n }\n\n /**\n * @param {number} val - Scale of the pages in percents.\n */\n set currentScale(val) {\n if (isNaN(val)) {\n throw new Error(\"Invalid numeric scale.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {string}\n */\n get currentScaleValue() {\n return this._currentScaleValue;\n }\n\n /**\n * @param val - The scale of the pages (in percent or predefined value).\n */\n set currentScaleValue(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @type {number}\n */\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n /**\n * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\n */\n set pagesRotation(rotation) {\n if (!isValidRotation(rotation)) {\n throw new Error(\"Invalid pages rotation angle.\");\n }\n if (!this.pdfDocument) {\n return;\n }\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n if (this._pagesRotation === rotation) {\n return; // The rotation didn't change.\n }\n this._pagesRotation = rotation;\n\n const pageNumber = this._currentPageNumber;\n\n const updateArgs = { rotation };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n // Prevent errors in case the rotation changes *before* the scale has been\n // set to a non-default value.\n if (this._currentScaleValue) {\n this._setScale(this._currentScaleValue, true);\n }\n\n this.eventBus.dispatch(\"rotationchanging\", {\n source: this,\n pagesRotation: rotation,\n pageNumber,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n get firstPagePromise() {\n return this.pdfDocument ? this._firstPageCapability.promise : null;\n }\n\n get onePageRendered() {\n return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\n }\n\n get pagesPromise() {\n return this.pdfDocument ? this._pagesCapability.promise : null;\n }\n\n /**\n * Currently only *some* permissions are supported.\n */\n #initializePermissions(permissions) {\n if (!permissions) {\n return;\n }\n\n if (!permissions.includes(PermissionFlag.COPY)) {\n this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS);\n }\n\n if (\n !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\n !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS)\n ) {\n if (this.#annotationMode === AnnotationMode.ENABLE_FORMS) {\n this.#previousAnnotationMode = this.#annotationMode; // Allow resetting.\n this.#annotationMode = AnnotationMode.ENABLE;\n }\n }\n }\n\n #onePageRenderedOrForceFetch() {\n // Unless the viewer *and* its pages are visible, rendering won't start and\n // `this._onePageRenderedCapability` thus won't be resolved.\n // To ensure that automatic printing, on document load, still works even in\n // those cases we force-allow fetching of all pages when:\n // - The current window/tab is inactive, which will prevent rendering since\n // `requestAnimationFrame` is being used; fixes bug 1746213.\n // - The viewer is hidden in the DOM, e.g. in a `display: none` <iframe>\n // element; fixes bug 1618621.\n // - The viewer is visible, but none of the pages are (e.g. if the\n // viewer is very small); fixes bug 1618955.\n if (\n document.visibilityState === \"hidden\" ||\n !this.container.offsetParent ||\n this._getVisiblePages().views.length === 0\n ) {\n return Promise.resolve();\n }\n\n // Handle the window/tab becoming inactive *after* rendering has started;\n // fixes (another part of) bug 1746213.\n const visibilityChangePromise = new Promise(resolve => {\n this.#onVisibilityChange = () => {\n if (document.visibilityState !== \"hidden\") {\n return;\n }\n resolve();\n\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n };\n document.addEventListener(\"visibilitychange\", this.#onVisibilityChange);\n });\n\n return Promise.race([\n this._onePageRenderedCapability.promise,\n visibilityChangePromise,\n ]);\n }\n\n /**\n * @param {PDFDocumentProxy} pdfDocument\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this.eventBus.dispatch(\"pagesdestroy\", { source: this });\n\n this._cancelRendering();\n this._resetView();\n\n if (this.findController) {\n this.findController.setDocument(null);\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(null);\n }\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n const isPureXfa = pdfDocument.isPureXfa;\n const pagesCount = pdfDocument.numPages;\n const firstPagePromise = pdfDocument.getPage(1);\n // Rendering (potentially) depends on this, hence fetching it immediately.\n const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();\n const permissionsPromise = this.#enablePermissions\n ? pdfDocument.getPermissions()\n : Promise.resolve();\n\n // Given that browsers don't handle huge amounts of DOM-elements very well,\n // enforce usage of PAGE-scrolling when loading *very* long/large documents.\n if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n console.warn(\n \"Forcing PAGE-scrolling for performance reasons, given the length of the document.\"\n );\n const mode = (this._scrollMode = ScrollMode.PAGE);\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n }\n\n this._pagesCapability.promise.then(\n () => {\n this.eventBus.dispatch(\"pagesloaded\", { source: this, pagesCount });\n },\n () => {\n /* Prevent \"Uncaught (in promise)\"-messages in the console. */\n }\n );\n\n this._onBeforeDraw = evt => {\n const pageView = this._pages[evt.pageNumber - 1];\n if (!pageView) {\n return;\n }\n // Add the page to the buffer at the start of drawing. That way it can be\n // evicted from the buffer and destroyed even if we pause its rendering.\n this.#buffer.push(pageView);\n };\n this.eventBus._on(\"pagerender\", this._onBeforeDraw);\n\n this._onAfterDraw = evt => {\n if (evt.cssTransform || this._onePageRenderedCapability.settled) {\n return;\n }\n this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\n\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n };\n this.eventBus._on(\"pagerendered\", this._onAfterDraw);\n\n // Fetch a single page so we can get a viewport that will be the default\n // viewport for all pages\n Promise.all([firstPagePromise, permissionsPromise])\n .then(([firstPdfPage, permissions]) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the first page resolved.\n }\n this._firstPageCapability.resolve(firstPdfPage);\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n this.#initializePermissions(permissions);\n\n const viewerElement =\n this._scrollMode === ScrollMode.PAGE ? null : this.viewer;\n const scale = this.currentScale;\n const viewport = firstPdfPage.getViewport({\n scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const textLayerFactory =\n this.textLayerMode !== TextLayerMode.DISABLE && !isPureXfa\n ? this\n : null;\n const annotationLayerFactory =\n this.#annotationMode !== AnnotationMode.DISABLE ? this : null;\n const xfaLayerFactory = isPureXfa ? this : null;\n\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n const pageView = new PDFPageView({\n container: viewerElement,\n eventBus: this.eventBus,\n id: pageNum,\n scale,\n defaultViewport: viewport.clone(),\n optionalContentConfigPromise,\n renderingQueue: this.renderingQueue,\n textLayerFactory,\n textLayerMode: this.textLayerMode,\n annotationLayerFactory,\n annotationMode: this.#annotationMode,\n xfaLayerFactory,\n textHighlighterFactory: this,\n structTreeLayerFactory: this,\n imageResourcesPath: this.imageResourcesPath,\n renderer: this.renderer,\n useOnlyCssZoom: this.useOnlyCssZoom,\n maxCanvasPixels: this.maxCanvasPixels,\n pageColors: this.pageColors,\n l10n: this.l10n,\n });\n this._pages.push(pageView);\n }\n // Set the first `pdfPage` immediately, since it's already loaded,\n // rather than having to repeat the `PDFDocumentProxy.getPage` call in\n // the `this.#ensurePdfPageLoaded` method before rendering can start.\n const firstPageView = this._pages[0];\n if (firstPageView) {\n firstPageView.setPdfPage(firstPdfPage);\n this.linkService.cachePageRef(1, firstPdfPage.ref);\n }\n\n if (this._scrollMode === ScrollMode.PAGE) {\n // Ensure that the current page becomes visible on document load.\n this.#ensurePageViewVisible();\n } else if (this._spreadMode !== SpreadMode.NONE) {\n this._updateSpreadMode();\n }\n\n // Fetch all the pages since the viewport is needed before printing\n // starts to create the correct size canvas. Wait until one page is\n // rendered so we don't tie up too many resources early on.\n this.#onePageRenderedOrForceFetch().then(async () => {\n if (this.findController) {\n this.findController.setDocument(pdfDocument); // Enable searching.\n }\n if (this._scriptingManager) {\n this._scriptingManager.setDocument(pdfDocument); // Enable scripting.\n }\n\n // In addition to 'disableAutoFetch' being set, also attempt to reduce\n // resource usage when loading *very* long/large documents.\n if (\n pdfDocument.loadingParams.disableAutoFetch ||\n pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\n ) {\n // XXX: Printing is semi-broken with auto fetch disabled.\n this._pagesCapability.resolve();\n return;\n }\n let getPagesLeft = pagesCount - 1; // The first page was already loaded.\n\n if (getPagesLeft <= 0) {\n this._pagesCapability.resolve();\n return;\n }\n for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) {\n const promise = pdfDocument.getPage(pageNum).then(\n pdfPage => {\n const pageView = this._pages[pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this.linkService.cachePageRef(pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n },\n reason => {\n console.error(\n `Unable to get page ${pageNum} to initialize viewer`,\n reason\n );\n if (--getPagesLeft === 0) {\n this._pagesCapability.resolve();\n }\n }\n );\n\n if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\n await promise;\n }\n }\n });\n\n this.eventBus.dispatch(\"pagesinit\", { source: this });\n\n pdfDocument.getMetadata().then(({ info }) => {\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the metadata resolved.\n }\n if (info.Language) {\n this.viewer.lang = info.Language;\n }\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n })\n .catch(reason => {\n console.error(\"Unable to initialize viewer\", reason);\n\n this._pagesCapability.reject(reason);\n });\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (\n !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\n ) {\n this._pageLabels = null;\n console.error(`setPageLabels: Invalid page labels.`);\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFPageView` instances.\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\n }\n }\n\n _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._optionalContentConfigPromise = null;\n this._firstPageCapability = createPromiseCapability();\n this._onePageRenderedCapability = createPromiseCapability();\n this._pagesCapability = createPromiseCapability();\n this._scrollMode = ScrollMode.VERTICAL;\n this._previousScrollMode = ScrollMode.UNKNOWN;\n this._spreadMode = SpreadMode.NONE;\n\n this.#scrollModePageState = {\n previousPageNumber: 1,\n scrollDown: true,\n pages: [],\n };\n\n if (this._onBeforeDraw) {\n this.eventBus._off(\"pagerender\", this._onBeforeDraw);\n this._onBeforeDraw = null;\n }\n if (this._onAfterDraw) {\n this.eventBus._off(\"pagerendered\", this._onAfterDraw);\n this._onAfterDraw = null;\n }\n if (this.#onVisibilityChange) {\n document.removeEventListener(\n \"visibilitychange\",\n this.#onVisibilityChange\n );\n this.#onVisibilityChange = null;\n }\n // Remove the pages from the DOM...\n this.viewer.textContent = \"\";\n // ... and reset the Scroll mode CSS class(es) afterwards.\n this._updateScrollMode();\n\n this.viewer.removeAttribute(\"lang\");\n // Reset all PDF document permissions.\n this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS);\n\n if (this.#previousAnnotationMode !== null) {\n this.#annotationMode = this.#previousAnnotationMode;\n this.#previousAnnotationMode = null;\n }\n }\n\n #ensurePageViewVisible() {\n if (this._scrollMode !== ScrollMode.PAGE) {\n throw new Error(\"#ensurePageViewVisible: Invalid scrollMode value.\");\n }\n const pageNumber = this._currentPageNumber,\n state = this.#scrollModePageState,\n viewer = this.viewer;\n\n // Temporarily remove all the pages from the DOM...\n viewer.textContent = \"\";\n // ... and clear out the active ones.\n state.pages.length = 0;\n\n if (this._spreadMode === SpreadMode.NONE && !this.isInPresentationMode) {\n // Finally, append the new page to the viewer.\n const pageView = this._pages[pageNumber - 1];\n viewer.appendChild(pageView.div);\n\n state.pages.push(pageView);\n } else {\n const pageIndexSet = new Set(),\n parity = this._spreadMode - 1;\n\n // Determine the pageIndices in the new spread.\n if (parity === -1) {\n // PresentationMode is active, with `SpreadMode.NONE` set.\n pageIndexSet.add(pageNumber - 1);\n } else if (pageNumber % 2 !== parity) {\n // Left-hand side page.\n pageIndexSet.add(pageNumber - 1);\n pageIndexSet.add(pageNumber);\n } else {\n // Right-hand side page.\n pageIndexSet.add(pageNumber - 2);\n pageIndexSet.add(pageNumber - 1);\n }\n\n // Finally, append the new pages to the viewer and apply the spreadMode.\n const spread = document.createElement(\"div\");\n spread.className = \"spread\";\n\n if (this.isInPresentationMode) {\n const dummyPage = document.createElement(\"div\");\n dummyPage.className = \"dummyPage\";\n spread.appendChild(dummyPage);\n }\n\n for (const i of pageIndexSet) {\n const pageView = this._pages[i];\n if (!pageView) {\n continue;\n }\n spread.appendChild(pageView.div);\n\n state.pages.push(pageView);\n }\n viewer.appendChild(spread);\n }\n\n state.scrollDown = pageNumber >= state.previousPageNumber;\n state.previousPageNumber = pageNumber;\n }\n\n _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n\n #scrollIntoView(pageView, pageSpot = null) {\n const { div, id } = pageView;\n\n if (this._scrollMode === ScrollMode.PAGE) {\n // Ensure that `this._currentPageNumber` is correct.\n this._setCurrentPageNumber(id);\n\n this.#ensurePageViewVisible();\n // Ensure that rendering always occurs, to avoid showing a blank page,\n // even if the current position doesn't change when the page is scrolled.\n this.update();\n }\n\n if (!pageSpot && !this.isInPresentationMode) {\n const left = div.offsetLeft + div.clientLeft,\n right = left + div.clientWidth;\n const { scrollLeft, clientWidth } = this.container;\n if (\n this._scrollMode === ScrollMode.HORIZONTAL ||\n left < scrollLeft ||\n right > scrollLeft + clientWidth\n ) {\n pageSpot = { left: 0, top: 0 };\n }\n }\n scrollIntoView(div, pageSpot);\n }\n\n /**\n * Prevent unnecessary re-rendering of all pages when the scale changes\n * only because of limited numerical precision.\n */\n #isSameScale(newScale) {\n return (\n newScale === this._currentScale ||\n Math.abs(newScale - this._currentScale) < 1e-15\n );\n }\n\n _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {\n this._currentScaleValue = newValue.toString();\n\n if (this.#isSameScale(newScale)) {\n if (preset) {\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: newValue,\n });\n }\n return;\n }\n\n this._doc.style.setProperty(\"--zoom-factor\", newScale);\n\n const updateArgs = { scale: newScale };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this._currentScale = newScale;\n\n if (!noScroll) {\n let page = this._currentPageNumber,\n dest;\n if (\n this._location &&\n !(this.isInPresentationMode || this.isChangingPresentationMode)\n ) {\n page = this._location.pageNumber;\n dest = [\n null,\n { name: \"XYZ\" },\n this._location.left,\n this._location.top,\n null,\n ];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined,\n });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n this.updateContainerHeightCss();\n }\n\n /**\n * @private\n */\n get _pageWidthScaleFactor() {\n if (\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL\n ) {\n return 2;\n }\n return 1;\n }\n\n _setScale(value, noScroll = false) {\n let scale = parseFloat(value);\n\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ false);\n } else {\n const currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n let hPadding = SCROLLBAR_PADDING,\n vPadding = VERTICAL_PADDING;\n\n if (this.isInPresentationMode) {\n hPadding = vPadding = 4;\n } else if (this.removePageBorders) {\n hPadding = vPadding = 0;\n } else if (this._scrollMode === ScrollMode.HORIZONTAL) {\n [hPadding, vPadding] = [vPadding, hPadding]; // Swap the padding values.\n }\n const pageWidthScale =\n (((this.container.clientWidth - hPadding) / currentPage.width) *\n currentPage.scale) /\n this._pageWidthScaleFactor;\n const pageHeightScale =\n ((this.container.clientHeight - vPadding) / currentPage.height) *\n currentPage.scale;\n switch (value) {\n case \"page-actual\":\n scale = 1;\n break;\n case \"page-width\":\n scale = pageWidthScale;\n break;\n case \"page-height\":\n scale = pageHeightScale;\n break;\n case \"page-fit\":\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case \"auto\":\n // For pages in landscape mode, fit the page height to the viewer\n // *unless* the page would thus become too wide to fit horizontally.\n const horizontalScale = isPortraitOrientation(currentPage)\n ? pageWidthScale\n : Math.min(pageHeightScale, pageWidthScale);\n scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(`_setScale: \"${value}\" is an unknown zoom value.`);\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ true);\n }\n }\n\n /**\n * Refreshes page view: scrolls to the current page and updates the scale.\n */\n #resetCurrentPageView() {\n const pageView = this._pages[this._currentPageNumber - 1];\n\n if (this.isInPresentationMode) {\n // Fixes the case when PDF has different page sizes.\n this._setScale(this._currentScaleValue, true);\n }\n this.#scrollIntoView(pageView);\n }\n\n /**\n * @param {string} label - The page label.\n * @returns {number|null} The page number corresponding to the page label,\n * or `null` when no page labels exist and/or the input is invalid.\n */\n pageLabelToPageNumber(label) {\n if (!this._pageLabels) {\n return null;\n }\n const i = this._pageLabels.indexOf(label);\n if (i < 0) {\n return null;\n }\n return i + 1;\n }\n\n /**\n * @typedef {Object} ScrollPageIntoViewParameters\n * @property {number} pageNumber - The page number.\n * @property {Array} [destArray] - The original PDF destination array, in the\n * format: <page-ref> </XYZ|/FitXXX> <args..>\n * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\n * The default value is `false`.\n * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\n * the destination array. The default value is `false`.\n */\n\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView({\n pageNumber,\n destArray = null,\n allowNegativeOffset = false,\n ignoreDestinationZoom = false,\n }) {\n if (!this.pdfDocument) {\n return;\n }\n const pageView =\n Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(\n `scrollPageIntoView: \"${pageNumber}\" is not a valid pageNumber parameter.`\n );\n return;\n }\n\n if (this.isInPresentationMode || !destArray) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n let x = 0,\n y = 0;\n let width = 0,\n height = 0,\n widthScale,\n heightScale;\n const changeOrientation = pageView.rotation % 180 !== 0;\n const pageWidth =\n (changeOrientation ? pageView.height : pageView.width) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n const pageHeight =\n (changeOrientation ? pageView.width : pageView.height) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n let scale = 0;\n switch (destArray[1].name) {\n case \"XYZ\":\n x = destArray[2];\n y = destArray[3];\n scale = destArray[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case \"Fit\":\n case \"FitB\":\n scale = \"page-fit\";\n break;\n case \"FitH\":\n case \"FitBH\":\n y = destArray[2];\n scale = \"page-width\";\n // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // parameter should maintain the position relative to the new page.\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n } else if (typeof y !== \"number\" || y < 0) {\n // The \"top\" value isn't optional, according to the spec, however some\n // bad PDF generators will pretend that it is (fixes bug 1663390).\n y = pageHeight;\n }\n break;\n case \"FitV\":\n case \"FitBV\":\n x = destArray[2];\n width = pageWidth;\n height = pageHeight;\n scale = \"page-height\";\n break;\n case \"FitR\":\n x = destArray[2];\n y = destArray[3];\n width = destArray[4] - x;\n height = destArray[5] - y;\n const hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING;\n const vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING;\n\n widthScale =\n (this.container.clientWidth - hPadding) /\n width /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n heightScale =\n (this.container.clientHeight - vPadding) /\n height /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(\n `scrollPageIntoView: \"${destArray[1].name}\" is not a valid destination type.`\n );\n return;\n }\n\n if (!ignoreDestinationZoom) {\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === UNKNOWN_SCALE) {\n this.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n }\n\n if (scale === \"page-fit\" && !destArray[4]) {\n this.#scrollIntoView(pageView);\n return;\n }\n\n const boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height),\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n this.#scrollIntoView(pageView, /* pageSpot = */ { left, top });\n }\n\n _updateLocation(firstPage) {\n const currentScale = this._currentScale;\n const currentScaleValue = this._currentScaleValue;\n const normalizedScaleValue =\n parseFloat(currentScaleValue) === currentScale\n ? Math.round(currentScale * 10000) / 100\n : currentScaleValue;\n\n const pageNumber = firstPage.id;\n const currentPageView = this._pages[pageNumber - 1];\n const container = this.container;\n const topLeft = currentPageView.getPagePoint(\n container.scrollLeft - firstPage.x,\n container.scrollTop - firstPage.y\n );\n const intLeft = Math.round(topLeft[0]);\n const intTop = Math.round(topLeft[1]);\n\n let pdfOpenParams = `#page=${pageNumber}`;\n if (!this.isInPresentationMode) {\n pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;\n }\n\n this._location = {\n pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n rotation: this._pagesRotation,\n pdfOpenParams,\n };\n }\n\n update() {\n const visible = this._getVisiblePages();\n const visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n\n if (numVisiblePages === 0) {\n return;\n }\n const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n this.#buffer.resize(newCacheSize, visible.ids);\n\n this.renderingQueue.renderHighestPriority(visible);\n\n const isSimpleLayout =\n this._spreadMode === SpreadMode.NONE &&\n (this._scrollMode === ScrollMode.PAGE ||\n this._scrollMode === ScrollMode.VERTICAL);\n const currentId = this._currentPageNumber;\n let stillFullyVisible = false;\n\n for (const page of visiblePages) {\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId && isSimpleLayout) {\n stillFullyVisible = true;\n break;\n }\n }\n this._setCurrentPageNumber(\n stillFullyVisible ? currentId : visiblePages[0].id\n );\n\n this._updateLocation(visible.first);\n this.eventBus.dispatch(\"updateviewarea\", {\n source: this,\n location: this._location,\n });\n }\n\n containsElement(element) {\n return this.container.contains(element);\n }\n\n focus() {\n this.container.focus();\n }\n\n get _isContainerRtl() {\n return getComputedStyle(this.container).direction === \"rtl\";\n }\n\n get isInPresentationMode() {\n return this.presentationModeState === PresentationModeState.FULLSCREEN;\n }\n\n get isChangingPresentationMode() {\n return this.presentationModeState === PresentationModeState.CHANGING;\n }\n\n get isHorizontalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollWidth > this.container.clientWidth;\n }\n\n get isVerticalScrollbarEnabled() {\n return this.isInPresentationMode\n ? false\n : this.container.scrollHeight > this.container.clientHeight;\n }\n\n _getVisiblePages() {\n const views =\n this._scrollMode === ScrollMode.PAGE\n ? this.#scrollModePageState.pages\n : this._pages,\n horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\n rtl = horizontal && this._isContainerRtl;\n\n return getVisibleElements({\n scrollEl: this.container,\n views,\n sortByVisibility: true,\n horizontal,\n rtl,\n });\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageVisible: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n return this._getVisiblePages().ids.has(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n if (!this.pdfDocument) {\n return false;\n }\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`isPageCached: \"${pageNumber}\" is not a valid page.`);\n return false;\n }\n const pageView = this._pages[pageNumber - 1];\n return this.#buffer.has(pageView);\n }\n\n cleanup() {\n for (const pageView of this._pages) {\n if (pageView.renderingState !== RenderingStates.FINISHED) {\n pageView.reset();\n }\n }\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (const pageView of this._pages) {\n pageView.cancelRendering();\n }\n }\n\n /**\n * @param {PDFPageView} pageView\n * @returns {Promise<PDFPageProxy | null>}\n */\n async #ensurePdfPageLoaded(pageView) {\n if (pageView.pdfPage) {\n return pageView.pdfPage;\n }\n try {\n const pdfPage = await this.pdfDocument.getPage(pageView.id);\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) {\n this.linkService.cachePageRef(pageView.id, pdfPage.ref);\n }\n return pdfPage;\n } catch (reason) {\n console.error(\"Unable to get page for page view\", reason);\n return null; // Page error -- there is nothing that can be done.\n }\n }\n\n #getScrollAhead(visible) {\n if (visible.first?.id === 1) {\n return true;\n } else if (visible.last?.id === this.pagesCount) {\n return false;\n }\n switch (this._scrollMode) {\n case ScrollMode.PAGE:\n return this.#scrollModePageState.scrollDown;\n case ScrollMode.HORIZONTAL:\n return this.scroll.right;\n }\n return this.scroll.down;\n }\n\n /**\n * Only show the `loadingIcon`-spinner on visible pages (see issue 14242).\n */\n #toggleLoadingIconSpinner(visibleIds) {\n for (const id of visibleIds) {\n const pageView = this._pages[id - 1];\n pageView?.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n for (const pageView of this.#buffer) {\n if (visibleIds.has(pageView.id)) {\n // Handled above, since the \"buffer\" may not contain all visible pages.\n continue;\n }\n pageView.toggleLoadingIconSpinner(/* viewVisible = */ false);\n }\n }\n\n forceRendering(currentlyVisiblePages) {\n const visiblePages = currentlyVisiblePages || this._getVisiblePages();\n const scrollAhead = this.#getScrollAhead(visiblePages);\n const preRenderExtra =\n this._spreadMode !== SpreadMode.NONE &&\n this._scrollMode !== ScrollMode.HORIZONTAL;\n\n const pageView = this.renderingQueue.getHighestPriority(\n visiblePages,\n this._pages,\n scrollAhead,\n preRenderExtra\n );\n this.#toggleLoadingIconSpinner(visiblePages.ids);\n\n if (pageView) {\n this.#ensurePdfPageLoaded(pageView).then(() => {\n this.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @param {boolean} enhanceTextSelection\n * @param {EventBus} eventBus\n * @param {TextHighlighter} highlighter\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(\n textLayerDiv,\n pageIndex,\n viewport,\n enhanceTextSelection = false,\n eventBus,\n highlighter\n ) {\n return new TextLayerBuilder({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n enhanceTextSelection: this.isInPresentationMode\n ? false\n : enhanceTextSelection,\n highlighter,\n });\n }\n\n /**\n * @param {number} pageIndex\n * @param {EventBus} eventBus\n * @returns {TextHighlighter}\n */\n createTextHighlighter(pageIndex, eventBus) {\n return new TextHighlighter({\n eventBus,\n pageIndex,\n findController: this.isInPresentationMode ? null : this.findController,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @param {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @param {boolean} renderForms\n * @param {IL10n} l10n\n * @param {boolean} [enableScripting]\n * @param {Promise<boolean>} [hasJSActionsPromise]\n * @param {Object} [mouseState]\n * @param {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @param {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(\n pageDiv,\n pdfPage,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = null,\n hasJSActionsPromise = null,\n mouseState = null,\n fieldObjectsPromise = null,\n annotationCanvasMap = null\n ) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n imageResourcesPath,\n renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n,\n enableScripting: enableScripting ?? this.enableScripting,\n hasJSActionsPromise:\n hasJSActionsPromise || this.pdfDocument?.hasJSActions(),\n fieldObjectsPromise:\n fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),\n mouseState: mouseState || this._scriptingManager?.mouseState,\n annotationCanvasMap,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPageProxy} pdfPage\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n * data in forms.\n * @returns {XfaLayerBuilder}\n */\n createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {\n return new XfaLayerBuilder({\n pageDiv,\n pdfPage,\n annotationStorage:\n annotationStorage || this.pdfDocument?.annotationStorage,\n linkService: this.linkService,\n });\n }\n\n /**\n * @param {PDFPageProxy} pdfPage\n * @returns {StructTreeLayerBuilder}\n */\n createStructTreeLayerBuilder(pdfPage) {\n return new StructTreeLayerBuilder({\n pdfPage,\n });\n }\n\n /**\n * @type {boolean} Whether all pages of the PDF document have identical\n * widths and heights.\n */\n get hasEqualPageSizes() {\n const firstPageView = this._pages[0];\n for (let i = 1, ii = this._pages.length; i < ii; ++i) {\n const pageView = this._pages[i];\n if (\n pageView.width !== firstPageView.width ||\n pageView.height !== firstPageView.height\n ) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Returns sizes of the pages.\n * @returns {Array} Array of objects with width/height/rotation fields.\n */\n getPagesOverview() {\n return this._pages.map(pageView => {\n const viewport = pageView.pdfPage.getViewport({ scale: 1 });\n\n if (!this.enablePrintAutoRotate || isPortraitOrientation(viewport)) {\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation,\n };\n }\n // Landscape orientation.\n return {\n width: viewport.height,\n height: viewport.width,\n rotation: (viewport.rotation - 90) % 360,\n };\n });\n }\n\n /**\n * @type {Promise<OptionalContentConfig | null>}\n */\n get optionalContentConfigPromise() {\n if (!this.pdfDocument) {\n return Promise.resolve(null);\n }\n if (!this._optionalContentConfigPromise) {\n // Prevent issues if the getter is accessed *before* the `onePageRendered`\n // promise has resolved; won't (normally) happen in the default viewer.\n return this.pdfDocument.getOptionalContentConfig();\n }\n return this._optionalContentConfigPromise;\n }\n\n /**\n * @param {Promise<OptionalContentConfig>} promise - A promise that is\n * resolved with an {@link OptionalContentConfig} instance.\n */\n set optionalContentConfigPromise(promise) {\n if (!(promise instanceof Promise)) {\n throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\n }\n if (!this.pdfDocument) {\n return;\n }\n if (!this._optionalContentConfigPromise) {\n // Ignore the setter *before* the `onePageRendered` promise has resolved,\n // since it'll be overwritten anyway; won't happen in the default viewer.\n return;\n }\n this._optionalContentConfigPromise = promise;\n\n const updateArgs = { optionalContentConfigPromise: promise };\n for (const pageView of this._pages) {\n pageView.update(updateArgs);\n }\n this.update();\n\n this.eventBus.dispatch(\"optionalcontentconfigchanged\", {\n source: this,\n promise,\n });\n }\n\n /**\n * @type {number} One of the values in {ScrollMode}.\n */\n get scrollMode() {\n return this._scrollMode;\n }\n\n /**\n * @param {number} mode - The direction in which the document pages should be\n * laid out within the scrolling container.\n * The constants from {ScrollMode} should be used.\n */\n set scrollMode(mode) {\n if (this._scrollMode === mode) {\n return; // The Scroll mode didn't change.\n }\n if (!isValidScrollMode(mode)) {\n throw new Error(`Invalid scroll mode: ${mode}`);\n }\n if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\n return; // Disabled for performance reasons.\n }\n this._previousScrollMode = this._scrollMode;\n\n this._scrollMode = mode;\n this.eventBus.dispatch(\"scrollmodechanged\", { source: this, mode });\n\n this._updateScrollMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateScrollMode(pageNumber = null) {\n const scrollMode = this._scrollMode,\n viewer = this.viewer;\n\n viewer.classList.toggle(\n \"scrollHorizontal\",\n scrollMode === ScrollMode.HORIZONTAL\n );\n viewer.classList.toggle(\"scrollWrapped\", scrollMode === ScrollMode.WRAPPED);\n\n if (!this.pdfDocument || !pageNumber) {\n return;\n }\n\n if (scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else if (this._previousScrollMode === ScrollMode.PAGE) {\n // Ensure that the current spreadMode is still applied correctly when\n // the *previous* scrollMode was `ScrollMode.PAGE`.\n this._updateSpreadMode();\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @type {number} One of the values in {SpreadMode}.\n */\n get spreadMode() {\n return this._spreadMode;\n }\n\n /**\n * @param {number} mode - Group the pages in spreads, starting with odd- or\n * even-number pages (unless `SpreadMode.NONE` is used).\n * The constants from {SpreadMode} should be used.\n */\n set spreadMode(mode) {\n if (this._spreadMode === mode) {\n return; // The Spread mode didn't change.\n }\n if (!isValidSpreadMode(mode)) {\n throw new Error(`Invalid spread mode: ${mode}`);\n }\n this._spreadMode = mode;\n this.eventBus.dispatch(\"spreadmodechanged\", { source: this, mode });\n\n this._updateSpreadMode(/* pageNumber = */ this._currentPageNumber);\n }\n\n _updateSpreadMode(pageNumber = null) {\n if (!this.pdfDocument) {\n return;\n }\n const viewer = this.viewer,\n pages = this._pages;\n\n if (this._scrollMode === ScrollMode.PAGE) {\n this.#ensurePageViewVisible();\n } else {\n // Temporarily remove all the pages from the DOM.\n viewer.textContent = \"\";\n\n if (this._spreadMode === SpreadMode.NONE) {\n for (const pageView of this._pages) {\n viewer.appendChild(pageView.div);\n }\n } else {\n const parity = this._spreadMode - 1;\n let spread = null;\n for (let i = 0, ii = pages.length; i < ii; ++i) {\n if (spread === null) {\n spread = document.createElement(\"div\");\n spread.className = \"spread\";\n viewer.appendChild(spread);\n } else if (i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pages[i].div);\n }\n }\n }\n\n if (!pageNumber) {\n return;\n }\n // Non-numeric scale values can be sensitive to the scroll orientation.\n // Call this before re-scrolling to the current page, to ensure that any\n // changes in scale don't move the current page.\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n this.update();\n }\n\n /**\n * @private\n */\n _getPageAdvance(currentPageNumber, previous = false) {\n switch (this._scrollMode) {\n case ScrollMode.WRAPPED: {\n const { views } = this._getVisiblePages(),\n pageLayout = new Map();\n\n // Determine the current (visible) page layout.\n for (const { id, y, percent, widthPercent } of views) {\n if (percent === 0 || widthPercent < 100) {\n continue;\n }\n let yArray = pageLayout.get(y);\n if (!yArray) {\n pageLayout.set(y, (yArray ||= []));\n }\n yArray.push(id);\n }\n // Find the row of the current page.\n for (const yArray of pageLayout.values()) {\n const currentIndex = yArray.indexOf(currentPageNumber);\n if (currentIndex === -1) {\n continue;\n }\n const numPages = yArray.length;\n if (numPages === 1) {\n break;\n }\n // Handle documents with varying page sizes.\n if (previous) {\n for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\n const currentId = yArray[i],\n expectedId = yArray[i + 1] - 1;\n if (currentId < expectedId) {\n return currentPageNumber - expectedId;\n }\n }\n } else {\n for (let i = currentIndex + 1, ii = numPages; i < ii; i++) {\n const currentId = yArray[i],\n expectedId = yArray[i - 1] + 1;\n if (currentId > expectedId) {\n return expectedId - currentPageNumber;\n }\n }\n }\n // The current row is \"complete\", advance to the previous/next one.\n if (previous) {\n const firstId = yArray[0];\n if (firstId < currentPageNumber) {\n return currentPageNumber - firstId + 1;\n }\n } else {\n const lastId = yArray[numPages - 1];\n if (lastId > currentPageNumber) {\n return lastId - currentPageNumber + 1;\n }\n }\n break;\n }\n break;\n }\n case ScrollMode.HORIZONTAL: {\n break;\n }\n case ScrollMode.PAGE:\n case ScrollMode.VERTICAL: {\n if (this._spreadMode === SpreadMode.NONE) {\n break; // Normal vertical scrolling.\n }\n const parity = this._spreadMode - 1;\n\n if (previous && currentPageNumber % 2 !== parity) {\n break; // Left-hand side page.\n } else if (!previous && currentPageNumber % 2 === parity) {\n break; // Right-hand side page.\n }\n const { views } = this._getVisiblePages(),\n expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\n\n for (const { id, percent, widthPercent } of views) {\n if (id !== expectedId) {\n continue;\n }\n if (percent > 0 && widthPercent === 100) {\n return 2;\n }\n break;\n }\n break;\n }\n }\n return 1;\n }\n\n /**\n * Go to the next page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n nextPage() {\n const currentPageNumber = this._currentPageNumber,\n pagesCount = this.pagesCount;\n\n if (currentPageNumber >= pagesCount) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ false) || 1;\n\n this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\n return true;\n }\n\n /**\n * Go to the previous page, taking scroll/spread-modes into account.\n * @returns {boolean} Whether navigation occured.\n */\n previousPage() {\n const currentPageNumber = this._currentPageNumber;\n\n if (currentPageNumber <= 1) {\n return false;\n }\n const advance =\n this._getPageAdvance(currentPageNumber, /* previous = */ true) || 1;\n\n this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\n return true;\n }\n\n /**\n * Increase the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n increaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.ceil(newScale * 10) / 10;\n newScale = Math.min(MAX_SCALE, newScale);\n } while (--steps > 0 && newScale < MAX_SCALE);\n this.currentScaleValue = newScale;\n }\n\n /**\n * Decrease the current zoom level one, or more, times.\n * @param {number} [steps] - Defaults to zooming once.\n */\n decreaseScale(steps = 1) {\n let newScale = this._currentScale;\n do {\n newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.floor(newScale * 10) / 10;\n newScale = Math.max(MIN_SCALE, newScale);\n } while (--steps > 0 && newScale > MIN_SCALE);\n this.currentScaleValue = newScale;\n }\n\n updateContainerHeightCss() {\n const height = this.container.clientHeight;\n\n if (height !== this.#previousContainerHeight) {\n this.#previousContainerHeight = height;\n\n this._doc.style.setProperty(\"--viewer-container-height\", `${height}px`);\n }\n }\n}\n\nexport { BaseViewer, PagesCountLimit, PDFPageViewBuffer };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { AnnotationLayer } from \"pdfjs-lib\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {IL10n} l10n - Localization service.\n * @property {boolean} [enableScripting]\n * @property {Promise<boolean>} [hasJSActionsPromise]\n * @property {Promise<Object<string, Array<Object>> | null>}\n * [fieldObjectsPromise]\n * @property {Object} [mouseState]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n linkService,\n downloadManager,\n annotationStorage = null,\n imageResourcesPath = \"\",\n renderForms = true,\n l10n = NullL10n,\n enableScripting = false,\n hasJSActionsPromise = null,\n fieldObjectsPromise = null,\n mouseState = null,\n annotationCanvasMap = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.imageResourcesPath = imageResourcesPath;\n this.renderForms = renderForms;\n this.l10n = l10n;\n this.annotationStorage = annotationStorage;\n this.enableScripting = enableScripting;\n this._hasJSActionsPromise = hasJSActionsPromise;\n this._fieldObjectsPromise = fieldObjectsPromise;\n this._mouseState = mouseState;\n this._annotationCanvasMap = annotationCanvasMap;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<void>} A promise that is resolved when rendering of the\n * annotations is complete.\n */\n async render(viewport, intent = \"display\") {\n const [annotations, hasJSActions = false, fieldObjects = null] =\n await Promise.all([\n this.pdfPage.getAnnotations({ intent }),\n this._hasJSActionsPromise,\n this._fieldObjectsPromise,\n ]);\n\n if (this._cancelled || annotations.length === 0) {\n return;\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n annotations,\n page: this.pdfPage,\n imageResourcesPath: this.imageResourcesPath,\n renderForms: this.renderForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n annotationStorage: this.annotationStorage,\n enableScripting: this.enableScripting,\n hasJSActions,\n fieldObjects,\n mouseState: this._mouseState,\n annotationCanvasMap: this._annotationCanvasMap,\n };\n\n if (this.div) {\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n AnnotationLayer.update(parameters);\n } else {\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n this.div = document.createElement(\"div\");\n this.div.className = \"annotationLayer\";\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n\n AnnotationLayer.render(parameters);\n this.l10n.translate(this.div);\n }\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { AnnotationLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A subset of the l10n strings in the `l10n/en-US/viewer.properties` file.\n */\nconst DEFAULT_L10N_STRINGS = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string:\n \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string:\n \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n\n print_progress_percent: \"{{progress}}%\",\n\n \"toggle_sidebar.title\": \"Toggle Sidebar\",\n \"toggle_sidebar_notification2.title\":\n \"Toggle Sidebar (document contains outline/attachments/layers)\",\n\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n\n error_version_info: \"PDF.js v{{version}} (build: {{build}})\",\n error_message: \"Message: {{message}}\",\n error_stack: \"Stack: {{stack}}\",\n error_file: \"File: {{file}}\",\n error_line: \"Line: {{line}}\",\n rendering_error: \"An error occurred while rendering the page.\",\n\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n\n loading: \"Loading…\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n\n printing_not_supported:\n \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled:\n \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n};\n\nfunction getL10nFallback(key, args) {\n switch (key) {\n case \"find_match_count\":\n key = `find_match_count[${args.total === 1 ? \"one\" : \"other\"}]`;\n break;\n case \"find_match_count_limit\":\n key = `find_match_count_limit[${args.limit === 1 ? \"one\" : \"other\"}]`;\n break;\n }\n return DEFAULT_L10N_STRINGS[key] || \"\";\n}\n\nconst PARTIAL_LANG_CODES = {\n en: \"en-US\",\n es: \"es-ES\",\n fy: \"fy-NL\",\n ga: \"ga-IE\",\n gu: \"gu-IN\",\n hi: \"hi-IN\",\n hy: \"hy-AM\",\n nb: \"nb-NO\",\n ne: \"ne-NP\",\n nn: \"nn-NO\",\n pa: \"pa-IN\",\n pt: \"pt-PT\",\n sv: \"sv-SE\",\n zh: \"zh-CN\",\n};\n\n// Try to support \"incompletely\" specified language codes (see issue 13689).\nfunction fixupLangCode(langCode) {\n return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;\n}\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return name in args ? args[name] : \"{{\" + name + \"}}\";\n });\n}\n\n/**\n * No-op implementation of the localization service.\n * @implements {IL10n}\n */\nconst NullL10n = {\n async getLanguage() {\n return \"en-us\";\n },\n\n async getDirection() {\n return \"ltr\";\n },\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n return formatL10nValue(fallback, args);\n },\n\n async translate(element) {},\n};\n\nexport { fixupLangCode, getL10nFallback, NullL10n };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/optional_content_config\").OptionalContentConfig} OptionalContentConfig */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFAnnotationLayerFactory} IPDFAnnotationLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFStructTreeLayerFactory} IPDFStructTreeLayerFactory */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./interfaces\").IPDFTextLayerFactory} IPDFTextLayerFactory */\n/** @typedef {import(\"./interfaces\").IL10n} IPDFXfaLayerFactory */\n/** @typedef {import(\"./interfaces\").IRenderableView} IRenderableView */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_rendering_queue\").PDFRenderingQueue} PDFRenderingQueue */\n\nimport {\n AnnotationMode,\n createPromiseCapability,\n PixelsPerInch,\n RenderingCancelledException,\n SVGGraphics,\n} from \"pdfjs-lib\";\nimport {\n approximateFraction,\n DEFAULT_SCALE,\n OutputScale,\n RendererType,\n RenderingStates,\n roundToDivide,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport { compatibilityParams } from \"./app_options.js\";\nimport { NullL10n } from \"./l10n_utils.js\";\n\n/**\n * @typedef {Object} PDFPageViewOptions\n * @property {HTMLDivElement} [container] - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} id - The page unique ID (normally its number).\n * @property {number} scale - The page scale display.\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that is resolved with an {@link OptionalContentConfig} instance.\n * The default value is `null`.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IPDFTextLayerFactory} textLayerFactory\n * @property {number} [textLayerMode] - Controls if the text layer used for\n * selection and searching is created, and if the improved text selection\n * behaviour is enabled. The constants from {TextLayerMode} should be used.\n * The default value is `TextLayerMode.ENABLE`.\n * @property {number} [annotationMode] - Controls if the annotation layer is\n * created, and if interactive form elements or `AnnotationStorage`-data are\n * being rendered. The constants from {@link AnnotationMode} should be used;\n * see also {@link RenderParameters} and {@link GetOperatorListParameters}.\n * The default value is `AnnotationMode.ENABLE_FORMS`.\n * @property {IPDFAnnotationLayerFactory} annotationLayerFactory\n * @property {IPDFXfaLayerFactory} xfaLayerFactory\n * @property {IPDFStructTreeLayerFactory} structTreeLayerFactory\n * @property {Object} [textHighlighterFactory]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {boolean} [useOnlyCssZoom] - Enables CSS only zooming. The default\n * value is `false`.\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\n * total pixels, i.e. width * height. Use -1 for no limit. The default value\n * is 4096 * 4096 (16 mega-pixels).\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {IL10n} l10n - Localization service.\n */\n\nconst MAX_CANVAS_PIXELS = compatibilityParams.maxCanvasPixels || 16777216;\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFPageView {\n #annotationMode = AnnotationMode.ENABLE_FORMS;\n\n /**\n * @param {PDFPageViewOptions} options\n */\n constructor(options) {\n const container = options.container;\n const defaultViewport = options.defaultViewport;\n\n this.id = options.id;\n this.renderingId = \"page\" + this.id;\n\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this._optionalContentConfigPromise =\n options.optionalContentConfigPromise || null;\n this.hasRestrictedScaling = false;\n this.textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n this.#annotationMode =\n options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n this.imageResourcesPath = options.imageResourcesPath || \"\";\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n this.pageColors = options.pageColors || null;\n\n this.eventBus = options.eventBus;\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.xfaLayerFactory = options.xfaLayerFactory;\n this.textHighlighter =\n options.textHighlighterFactory?.createTextHighlighter(\n this.id - 1,\n this.eventBus\n );\n this.structTreeLayerFactory = options.structTreeLayerFactory;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this._renderError = null;\n this._isStandalone = !this.renderingQueue?.hasViewer();\n\n this._annotationCanvasMap = null;\n\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n this.xfaLayer = null;\n this.structTreeLayer = null;\n\n const div = document.createElement(\"div\");\n div.className = \"page\";\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n div.setAttribute(\"data-page-number\", this.id);\n div.setAttribute(\"role\", \"region\");\n this.l10n.get(\"page_landmark\", { page: this.id }).then(msg => {\n div.setAttribute(\"aria-label\", msg);\n });\n this.div = div;\n\n container?.appendChild(div);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n }\n }\n\n /**\n * @private\n */\n async _renderAnnotationLayer() {\n let error = null;\n try {\n await this.annotationLayer.render(this.viewport, \"display\");\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"annotationlayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n /**\n * @private\n */\n async _renderXfaLayer() {\n let error = null;\n try {\n const result = await this.xfaLayer.render(this.viewport, \"display\");\n if (this.textHighlighter) {\n this._buildXfaTextContentItems(result.textDivs);\n }\n } catch (ex) {\n error = ex;\n } finally {\n this.eventBus.dispatch(\"xfalayerrendered\", {\n source: this,\n pageNumber: this.id,\n error,\n });\n }\n }\n\n async _buildXfaTextContentItems(textDivs) {\n const text = await this.pdfPage.getTextContent();\n const items = [];\n for (const item of text.items) {\n items.push(item.str);\n }\n this.textHighlighter.setTextMapping(textDivs, items);\n this.textHighlighter.enable();\n }\n\n /**\n * @private\n */\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n const zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n\n reset({\n keepZoomLayer = false,\n keepAnnotationLayer = false,\n keepXfaLayer = false,\n } = {}) {\n this.cancelRendering({ keepAnnotationLayer, keepXfaLayer });\n this.renderingState = RenderingStates.INITIAL;\n\n const div = this.div;\n div.style.width = Math.floor(this.viewport.width) + \"px\";\n div.style.height = Math.floor(this.viewport.height) + \"px\";\n\n const childNodes = div.childNodes,\n zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,\n annotationLayerNode =\n (keepAnnotationLayer && this.annotationLayer?.div) || null,\n xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const node = childNodes[i];\n switch (node) {\n case zoomLayerNode:\n case annotationLayerNode:\n case xfaLayerNode:\n continue;\n }\n node.remove();\n }\n div.removeAttribute(\"data-loaded\");\n\n if (annotationLayerNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.annotationLayer.hide();\n }\n if (xfaLayerNode) {\n // Hide the XFA layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.xfaLayer.hide();\n }\n\n if (!zoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n\n this.loadingIconDiv = document.createElement(\"div\");\n this.loadingIconDiv.className = \"loadingIcon notVisible\";\n if (this._isStandalone) {\n this.toggleLoadingIconSpinner(/* viewVisible = */ true);\n }\n this.loadingIconDiv.setAttribute(\"role\", \"img\");\n this.l10n.get(\"loading\").then(msg => {\n this.loadingIconDiv?.setAttribute(\"aria-label\", msg);\n });\n div.appendChild(this.loadingIconDiv);\n }\n\n update({ scale = 0, rotation = null, optionalContentConfigPromise = null }) {\n this.scale = scale || this.scale;\n if (typeof rotation === \"number\") {\n this.rotation = rotation; // The rotation may be zero.\n }\n if (optionalContentConfigPromise instanceof Promise) {\n this._optionalContentConfigPromise = optionalContentConfigPromise;\n }\n\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n\n if (this._isStandalone) {\n const { style } = document.documentElement;\n style.setProperty(\"--zoom-factor\", this.scale);\n }\n\n if (this.svg) {\n this.cssTransform({\n target: this.svg,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n\n let isScalingRestricted = false;\n if (this.canvas && this.maxCanvasPixels > 0) {\n const outputScale = this.outputScale;\n if (\n ((Math.floor(this.viewport.width) * outputScale.sx) | 0) *\n ((Math.floor(this.viewport.height) * outputScale.sy) | 0) >\n this.maxCanvasPixels\n ) {\n isScalingRestricted = true;\n }\n }\n\n if (this.canvas) {\n if (\n this.useOnlyCssZoom ||\n (this.hasRestrictedScaling && isScalingRestricted)\n ) {\n this.cssTransform({\n target: this.canvas,\n redrawAnnotationLayer: true,\n redrawXfaLayer: true,\n });\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n timestamp: performance.now(),\n error: this._renderError,\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hidden) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = \"absolute\";\n }\n }\n if (this.zoomLayer) {\n this.cssTransform({ target: this.zoomLayer.firstChild });\n }\n this.reset({\n keepZoomLayer: true,\n keepAnnotationLayer: true,\n keepXfaLayer: true,\n });\n }\n\n /**\n * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\n * rather than calling this one directly.\n */\n cancelRendering({ keepAnnotationLayer = false, keepXfaLayer = false } = {}) {\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.resume = null;\n\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n if (\n this.annotationLayer &&\n (!keepAnnotationLayer || !this.annotationLayer.div)\n ) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n this._annotationCanvasMap = null;\n }\n if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\n this.xfaLayer.cancel();\n this.xfaLayer = null;\n this.textHighlighter?.disable();\n }\n if (this._onTextLayerRendered) {\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n }\n }\n\n cssTransform({\n target,\n redrawAnnotationLayer = false,\n redrawXfaLayer = false,\n }) {\n // Scale target (canvas or svg), its wrapper and page container.\n const width = this.viewport.width;\n const height = this.viewport.height;\n const div = this.div;\n target.style.width =\n target.parentNode.style.width =\n div.style.width =\n Math.floor(width) + \"px\";\n target.style.height =\n target.parentNode.style.height =\n div.style.height =\n Math.floor(height) + \"px\";\n // The canvas may have been originally rotated; rotate relative to that.\n const relativeRotation =\n this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n const absRotation = Math.abs(relativeRotation);\n let scaleX = 1,\n scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n // Scale x and y because of the rotation.\n scaleX = height / width;\n scaleY = width / height;\n }\n target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\n\n if (this.textLayer) {\n // Rotating the text layer is more complicated since the divs inside the\n // the text layer are rotated.\n // TODO: This could probably be simplified by drawing the text layer in\n // one orientation and then rotating overall.\n const textLayerViewport = this.textLayer.viewport;\n const textRelativeRotation =\n this.viewport.rotation - textLayerViewport.rotation;\n const textAbsRotation = Math.abs(textRelativeRotation);\n let scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n const textLayerDiv = this.textLayer.textLayerDiv;\n let transX, transY;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 180:\n transX = \"-\" + textLayerDiv.style.width;\n transY = \"-\" + textLayerDiv.style.height;\n break;\n case 270:\n transX = \"-\" + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error(\"Bad rotation value.\");\n break;\n }\n\n textLayerDiv.style.transform =\n `rotate(${textAbsRotation}deg) ` +\n `scale(${scale}) ` +\n `translate(${transX}, ${transY})`;\n textLayerDiv.style.transformOrigin = \"0% 0%\";\n }\n\n if (redrawAnnotationLayer && this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n if (redrawXfaLayer && this.xfaLayer) {\n this._renderXfaLayer();\n }\n }\n\n get width() {\n return this.viewport.width;\n }\n\n get height() {\n return this.viewport.height;\n }\n\n getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n\n /**\n * @ignore\n */\n toggleLoadingIconSpinner(viewVisible = false) {\n this.loadingIconDiv?.classList.toggle(\"notVisible\", !viewVisible);\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error(\"Must be in new state before drawing\");\n this.reset(); // Ensure that we reset all state to prevent issues.\n }\n const { div, pdfPage } = this;\n\n if (!pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n return Promise.reject(new Error(\"pdfPage is not loaded\"));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n const canvasWrapper = document.createElement(\"div\");\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add(\"canvasWrapper\");\n\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n\n let textLayer = null;\n if (this.textLayerMode !== TextLayerMode.DISABLE && this.textLayerFactory) {\n const textLayerDiv = document.createElement(\"div\");\n textLayerDiv.className = \"textLayer\";\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer?.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n\n textLayer = this.textLayerFactory.createTextLayerBuilder(\n textLayerDiv,\n this.id - 1,\n this.viewport,\n this.textLayerMode === TextLayerMode.ENABLE_ENHANCE,\n this.eventBus,\n this.textHighlighter\n );\n }\n this.textLayer = textLayer;\n\n if (\n this.#annotationMode !== AnnotationMode.DISABLE &&\n this.annotationLayerFactory\n ) {\n this._annotationCanvasMap ||= new Map();\n this.annotationLayer ||=\n this.annotationLayerFactory.createAnnotationLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null,\n this.imageResourcesPath,\n this.#annotationMode === AnnotationMode.ENABLE_FORMS,\n this.l10n,\n /* enableScripting = */ null,\n /* hasJSActionsPromise = */ null,\n /* mouseState = */ null,\n /* fieldObjectsPromise = */ null,\n /* annotationCanvasMap */ this._annotationCanvasMap\n );\n }\n\n if (this.xfaLayer?.div) {\n // The xfa layer needs to stay on top.\n div.appendChild(this.xfaLayer.div);\n }\n\n let renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = cont => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n\n const finishPaintTask = async (error = null) => {\n // The paintTask may have been replaced by a new one, so only remove\n // the reference to the paintTask if it matches the one that is\n // triggering this callback.\n if (paintTask === this.paintTask) {\n this.paintTask = null;\n }\n\n if (error instanceof RenderingCancelledException) {\n this._renderError = null;\n return;\n }\n this._renderError = error;\n\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n this.loadingIconDiv.remove();\n delete this.loadingIconDiv;\n }\n this._resetZoomLayer(/* removeFromDOM = */ true);\n\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n timestamp: performance.now(),\n error: this._renderError,\n });\n\n if (error) {\n throw error;\n }\n };\n\n const paintTask =\n this.renderer === RendererType.SVG\n ? this.paintOnSvg(canvasWrapper)\n : this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n\n const resultPromise = paintTask.promise.then(\n () => {\n return finishPaintTask(null).then(() => {\n if (textLayer) {\n const readableStream = pdfPage.streamTextContent({\n includeMarkedContent: true,\n });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n\n if (this.annotationLayer) {\n this._renderAnnotationLayer();\n }\n });\n },\n function (reason) {\n return finishPaintTask(reason);\n }\n );\n\n if (this.xfaLayerFactory) {\n if (!this.xfaLayer) {\n this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(\n div,\n pdfPage,\n /* annotationStorage = */ null\n );\n }\n this._renderXfaLayer();\n }\n\n // The structure tree is currently only supported when the text layer is\n // enabled and a canvas is used for rendering.\n if (this.structTreeLayerFactory && this.textLayer && this.canvas) {\n // The structure tree must be generated after the text layer for the\n // aria-owns to work.\n this._onTextLayerRendered = event => {\n if (event.pageNumber !== this.id) {\n return;\n }\n this.eventBus._off(\"textlayerrendered\", this._onTextLayerRendered);\n this._onTextLayerRendered = null;\n\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n this.pdfPage.getStructTree().then(tree => {\n if (!tree) {\n return;\n }\n if (!this.canvas) {\n return; // The canvas was removed, prevent errors below.\n }\n const treeDom = this.structTreeLayer.render(tree);\n treeDom.classList.add(\"structTree\");\n this.canvas.appendChild(treeDom);\n });\n };\n this.eventBus._on(\"textlayerrendered\", this._onTextLayerRendered);\n this.structTreeLayer =\n this.structTreeLayerFactory.createStructTreeLayerBuilder(pdfPage);\n }\n\n div.setAttribute(\"data-loaded\", true);\n\n this.eventBus.dispatch(\"pagerender\", {\n source: this,\n pageNumber: this.id,\n });\n return resultPromise;\n }\n\n paintOnCanvas(canvasWrapper) {\n const renderCapability = createPromiseCapability();\n const result = {\n promise: renderCapability.promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n renderTask.cancel();\n },\n };\n\n const viewport = this.viewport;\n const canvas = document.createElement(\"canvas\");\n\n // Keep the canvas hidden until the first draw callback, or until drawing\n // is complete when `!this.renderingQueue`, to prevent black flickering.\n canvas.hidden = true;\n let isCanvasHidden = true;\n const showCanvas = function () {\n if (isCanvasHidden) {\n canvas.hidden = false;\n isCanvasHidden = false;\n }\n };\n\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n const outputScale = (this.outputScale = new OutputScale());\n\n if (this.useOnlyCssZoom) {\n const actualSizeViewport = viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n // Use a scale that makes the canvas have the originally intended size\n // of the page.\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n }\n\n if (this.maxCanvasPixels > 0) {\n const pixelsInViewport = viewport.width * viewport.height;\n const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n\n const sfx = approximateFraction(outputScale.sx);\n const sfy = approximateFraction(outputScale.sy);\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + \"px\";\n canvas.style.height = roundToDivide(viewport.height, sfy[1]) + \"px\";\n\n // Add the viewport so it's known what it was originally drawn with.\n this.paintedViewportMap.set(canvas, viewport);\n\n // Rendering area\n const transform = outputScale.scaled\n ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n : null;\n const renderContext = {\n canvasContext: ctx,\n transform,\n viewport: this.viewport,\n annotationMode: this.#annotationMode,\n optionalContentConfigPromise: this._optionalContentConfigPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n pageColors: this.pageColors,\n };\n const renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n\n renderTask.promise.then(\n function () {\n showCanvas();\n renderCapability.resolve();\n },\n function (error) {\n showCanvas();\n renderCapability.reject(error);\n }\n );\n return result;\n }\n\n paintOnSvg(wrapper) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"MOZCENTRAL || CHROME\")\n ) {\n // Return a mock object, to prevent errors such as e.g.\n // \"TypeError: paintTask.promise is undefined\".\n return {\n promise: Promise.reject(new Error(\"SVG rendering is not supported.\")),\n onRenderContinue(cont) {},\n cancel() {},\n };\n }\n\n let cancelled = false;\n const ensureNotCancelled = () => {\n if (cancelled) {\n throw new RenderingCancelledException(\n `Rendering cancelled, page ${this.id}`,\n \"svg\"\n );\n }\n };\n\n const pdfPage = this.pdfPage;\n const actualSizeViewport = this.viewport.clone({\n scale: PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n const promise = pdfPage\n .getOperatorList({\n annotationMode: this.#annotationMode,\n })\n .then(opList => {\n ensureNotCancelled();\n const svgGfx = new SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {\n ensureNotCancelled();\n this.svg = svg;\n this.paintedViewportMap.set(svg, actualSizeViewport);\n\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n this.renderingState = RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n\n return {\n promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n cancelled = true;\n },\n };\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = typeof label === \"string\" ? label : null;\n\n if (this.pageLabel !== null) {\n this.div.setAttribute(\"data-page-label\", this.pageLabel);\n } else {\n this.div.removeAttribute(\"data-page-label\");\n }\n }\n}\n\nexport { PDFPageView };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n\nconst PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: \"group\",\n Sect: \"group\", // XXX: There's a \"section\" role, but it's abstract.\n Div: \"group\",\n Aside: \"note\",\n NonStruct: \"none\",\n // Block level structure types\n P: null,\n // H<n>,\n H: \"heading\",\n Title: null,\n FENote: \"note\",\n // Sub-block level structure type\n Sub: \"group\",\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: \"link\",\n Annot: \"note\",\n Form: \"form\",\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: \"list\",\n LI: \"listitem\",\n LBody: null,\n // Table standard structure types\n Table: \"table\",\n TR: \"row\",\n TH: \"columnheader\",\n TD: \"cell\",\n THead: \"columnheader\",\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: \"figure\",\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n/**\n * @typedef {Object} StructTreeLayerBuilderOptions\n * @property {PDFPageProxy} pdfPage\n */\n\nclass StructTreeLayerBuilder {\n /**\n * @param {StructTreeLayerBuilderOptions} options\n */\n constructor({ pdfPage }) {\n this.pdfPage = pdfPage;\n }\n\n render(structTree) {\n return this._walk(structTree);\n }\n\n _setAttributes(structElement, htmlElement) {\n if (structElement.alt !== undefined) {\n htmlElement.setAttribute(\"aria-label\", structElement.alt);\n }\n if (structElement.id !== undefined) {\n htmlElement.setAttribute(\"aria-owns\", structElement.id);\n }\n if (structElement.lang !== undefined) {\n htmlElement.setAttribute(\"lang\", structElement.lang);\n }\n }\n\n _walk(node) {\n if (!node) {\n return null;\n }\n\n const element = document.createElement(\"span\");\n if (\"role\" in node) {\n const { role } = node;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n element.setAttribute(\"role\", \"heading\");\n element.setAttribute(\"aria-level\", match[1]);\n } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\n element.setAttribute(\"role\", PDF_ROLE_TO_HTML_ROLE[role]);\n }\n }\n\n this._setAttributes(node, element);\n\n if (node.children) {\n if (node.children.length === 1 && \"id\" in node.children[0]) {\n // Often there is only one content node so just set the values on the\n // parent node to avoid creating an extra span.\n this._setAttributes(node.children[0], element);\n } else {\n for (const kid of node.children) {\n element.appendChild(this._walk(kid));\n }\n }\n }\n return element;\n }\n}\n\nexport { StructTreeLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./pdf_find_controller\").PDFFindController} PDFFindController */\n\n/**\n * @typedef {Object} TextHighlighterOptions\n * @property {PDFFindController} findController\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n */\n\n/**\n * TextHighlighter handles highlighting matches from the FindController in\n * either the text layer or XFA layer depending on the type of document.\n */\nclass TextHighlighter {\n /**\n * @param {TextHighlighterOptions} options\n */\n constructor({ findController, eventBus, pageIndex }) {\n this.findController = findController;\n this.matches = [];\n this.eventBus = eventBus;\n this.pageIdx = pageIndex;\n this._onUpdateTextLayerMatches = null;\n this.textDivs = null;\n this.textContentItemsStr = null;\n this.enabled = false;\n }\n\n /**\n * Store two arrays that will map DOM nodes to text they should contain.\n * The arrays should be of equal length and the array element at each index\n * should correspond to the other. e.g.\n * `items[0] = \"<span>Item 0</span>\" and texts[0] = \"Item 0\";\n *\n * @param {Array<Node>} divs\n * @param {Array<string>} texts\n */\n setTextMapping(divs, texts) {\n this.textDivs = divs;\n this.textContentItemsStr = texts;\n }\n\n /**\n * Start listening for events to update the highlighter and check if there are\n * any current matches that need be highlighted.\n */\n enable() {\n if (!this.textDivs || !this.textContentItemsStr) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n if (this.enabled) {\n throw new Error(\"TextHighlighter is already enabled.\");\n }\n this.enabled = true;\n if (!this._onUpdateTextLayerMatches) {\n this._onUpdateTextLayerMatches = evt => {\n if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\n this._updateMatches();\n }\n };\n this.eventBus._on(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n }\n this._updateMatches();\n }\n\n disable() {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this._onUpdateTextLayerMatches) {\n this.eventBus._off(\n \"updatetextlayermatches\",\n this._onUpdateTextLayerMatches\n );\n this._onUpdateTextLayerMatches = null;\n }\n }\n\n _convertMatches(matches, matchesLength) {\n // Early exit if there is nothing to convert.\n if (!matches) {\n return [];\n }\n const { textContentItemsStr } = this;\n\n let i = 0,\n iIndex = 0;\n const end = textContentItemsStr.length - 1;\n const result = [];\n\n for (let m = 0, mm = matches.length; m < mm; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error(\"Could not find a matching mapping\");\n }\n\n const match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n matchIdx += matchesLength[m];\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n result.push(match);\n }\n return result;\n }\n\n _renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n const { findController, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n\n const isSelectedPage = pageIdx === findController.selected.pageIdx;\n const selectedMatchIdx = findController.selected.matchIdx;\n const highlightAll = findController.state.highlightAll;\n let prevEnd = null;\n const infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n const divIdx = begin.divIdx;\n textDivs[divIdx].textContent = \"\";\n return appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n if (div.nodeType === Node.TEXT_NODE) {\n const span = document.createElement(\"span\");\n div.parentNode.insertBefore(span, div);\n span.appendChild(div);\n textDivs[divIdx] = span;\n div = span;\n }\n const content = textContentItemsStr[divIdx].substring(\n fromOffset,\n toOffset\n );\n const node = document.createTextNode(content);\n if (className) {\n const span = document.createElement(\"span\");\n span.className = `${className} appended`;\n span.appendChild(node);\n div.appendChild(span);\n return className.includes(\"selected\") ? span.offsetLeft : 0;\n }\n div.appendChild(node);\n return 0;\n }\n\n let i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n for (let i = i0; i < i1; i++) {\n const match = matches[i];\n const begin = match.begin;\n const end = match.end;\n const isSelected = isSelectedPage && i === selectedMatchIdx;\n const highlightSuffix = isSelected ? \" selected\" : \"\";\n let selectedLeft = 0;\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n end.offset,\n \"highlight\" + highlightSuffix\n );\n } else {\n selectedLeft = appendTextToDiv(\n begin.divIdx,\n begin.offset,\n infinity.offset,\n \"highlight begin\" + highlightSuffix\n );\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = \"highlight middle\" + highlightSuffix;\n }\n beginText(end, \"highlight end\" + highlightSuffix);\n }\n prevEnd = end;\n\n if (isSelected) {\n // Attempt to scroll the selected match into view.\n findController.scrollMatchIntoView({\n element: textDivs[begin.divIdx],\n selectedLeft,\n pageIndex: pageIdx,\n matchIndex: selectedMatchIdx,\n });\n }\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n _updateMatches() {\n if (!this.enabled) {\n return;\n }\n const { findController, matches, pageIdx } = this;\n const { textContentItemsStr, textDivs } = this;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (let i = 0, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n const div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = \"\";\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (!findController?.highlightMatches) {\n return;\n }\n // Convert the matches on the `findController` into the match format\n // used for the textLayer.\n const pageMatches = findController.pageMatches[pageIdx] || null;\n const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\n\n this.matches = this._convertMatches(pageMatches, pageMatchesLength);\n this._renderMatches(this.matches);\n }\n}\n\nexport { TextHighlighter };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./text_highlighter\").TextHighlighter} TextHighlighter */\n\nimport { renderTextLayer } from \"pdfjs-lib\";\n\nconst EXPAND_DIVS_TIMEOUT = 300; // ms\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {HTMLDivElement} textLayerDiv - The text layer container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n * @property {PageViewport} viewport - The viewport of the text layer.\n * @property {TextHighlighter} highlighter - Optional object that will handle\n * highlighting text from the find controller.\n * @property {boolean} enhanceTextSelection - Option to turn on improved\n * text selection.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n constructor({\n textLayerDiv,\n eventBus,\n pageIndex,\n viewport,\n highlighter = null,\n enhanceTextSelection = false,\n }) {\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus;\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageNumber = pageIndex + 1;\n this.viewport = viewport;\n this.textDivs = [];\n this.textLayerRenderTask = null;\n this.highlighter = highlighter;\n this.enhanceTextSelection = enhanceTextSelection;\n\n this._bindMouse();\n }\n\n /**\n * @private\n */\n _finishRendering() {\n this.renderingDone = true;\n\n if (!this.enhanceTextSelection) {\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.textLayerDiv.appendChild(endOfContent);\n }\n\n this.eventBus.dispatch(\"textlayerrendered\", {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length,\n });\n }\n\n /**\n * Renders the text layer.\n *\n * @param {number} [timeout] - Wait for a specified amount of milliseconds\n * before rendering.\n */\n render(timeout = 0) {\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n\n this.textDivs.length = 0;\n this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);\n\n const textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = renderTextLayer({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout,\n enhanceTextSelection: this.enhanceTextSelection,\n });\n this.textLayerRenderTask.promise.then(\n () => {\n this.textLayerDiv.appendChild(textLayerFrag);\n this._finishRendering();\n this.highlighter?.enable();\n },\n function (reason) {\n // Cancelled or failed to render text layer; skipping errors.\n }\n );\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n this.highlighter?.disable();\n }\n\n setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n\n setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n *\n * @private\n */\n _bindMouse() {\n const div = this.textLayerDiv;\n let expandDivsTimer = null;\n\n div.addEventListener(\"mousedown\", evt => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(true);\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n expandDivsTimer\n ) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n adjustTop =\n adjustTop &&\n window\n .getComputedStyle(end)\n .getPropertyValue(\"-moz-user-select\") !== \"none\";\n }\n if (adjustTop) {\n const divBounds = div.getBoundingClientRect();\n const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + \"%\";\n }\n }\n end.classList.add(\"active\");\n });\n\n div.addEventListener(\"mouseup\", () => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n expandDivsTimer = setTimeout(() => {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n } else {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n return;\n }\n\n const end = div.querySelector(\".endOfContent\");\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n end.style.top = \"\";\n }\n end.classList.remove(\"active\");\n });\n }\n}\n\nexport { TextLayerBuilder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaLayer } from \"pdfjs-lib\";\n\n/**\n * @typedef {Object} XfaLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {Object} [xfaHtml]\n */\n\nclass XfaLayerBuilder {\n /**\n * @param {XfaLayerBuilderOptions} options\n */\n constructor({\n pageDiv,\n pdfPage,\n annotationStorage = null,\n linkService,\n xfaHtml = null,\n }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.annotationStorage = annotationStorage;\n this.linkService = linkService;\n this.xfaHtml = xfaHtml;\n\n this.div = null;\n this._cancelled = false;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise<Object | void>} A promise that is resolved when rendering\n * of the XFA layer is complete. The first rendering will return an object\n * with a `textDivs` property that can be used with the TextHighlighter.\n */\n render(viewport, intent = \"display\") {\n if (intent === \"print\") {\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml: this.xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n // Create an xfa layer div and render the form\n const div = document.createElement(\"div\");\n this.pageDiv.appendChild(div);\n parameters.div = div;\n\n const result = XfaLayer.render(parameters);\n return Promise.resolve(result);\n }\n\n // intent === \"display\"\n return this.pdfPage\n .getXfa()\n .then(xfaHtml => {\n if (this._cancelled || !xfaHtml) {\n return { textDivs: [] };\n }\n\n const parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: this.div,\n xfaHtml,\n annotationStorage: this.annotationStorage,\n linkService: this.linkService,\n intent,\n };\n\n if (this.div) {\n return XfaLayer.update(parameters);\n }\n // Create an xfa layer div and render the form\n this.div = document.createElement(\"div\");\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n return XfaLayer.render(parameters);\n })\n .catch(error => {\n console.error(error);\n });\n }\n\n cancel() {\n this._cancelled = true;\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n}\n\nexport { XfaLayerBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ScrollMode, SpreadMode } from \"./ui_utils.js\";\nimport { CursorTool } from \"./pdf_cursor_tools.js\";\nimport { PagesCountLimit } from \"./base_viewer.js\";\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\n * bookmark link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {EventBus} eventBus\n */\n constructor(options, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.buttons = [\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n close: true,\n },\n { element: options.printButton, eventName: \"print\", close: true },\n { element: options.downloadButton, eventName: \"download\", close: true },\n { element: options.viewBookmarkButton, eventName: null, close: true },\n { element: options.firstPageButton, eventName: \"firstpage\", close: true },\n { element: options.lastPageButton, eventName: \"lastpage\", close: true },\n {\n element: options.pageRotateCwButton,\n eventName: \"rotatecw\",\n close: false,\n },\n {\n element: options.pageRotateCcwButton,\n eventName: \"rotateccw\",\n close: false,\n },\n {\n element: options.cursorSelectToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.SELECT },\n close: true,\n },\n {\n element: options.cursorHandToolButton,\n eventName: \"switchcursortool\",\n eventDetails: { tool: CursorTool.HAND },\n close: true,\n },\n {\n element: options.scrollPageButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.PAGE },\n close: true,\n },\n {\n element: options.scrollVerticalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.VERTICAL },\n close: true,\n },\n {\n element: options.scrollHorizontalButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.HORIZONTAL },\n close: true,\n },\n {\n element: options.scrollWrappedButton,\n eventName: \"switchscrollmode\",\n eventDetails: { mode: ScrollMode.WRAPPED },\n close: true,\n },\n {\n element: options.spreadNoneButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.NONE },\n close: true,\n },\n {\n element: options.spreadOddButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.ODD },\n close: true,\n },\n {\n element: options.spreadEvenButton,\n eventName: \"switchspreadmode\",\n eventDetails: { mode: SpreadMode.EVEN },\n close: true,\n },\n {\n element: options.documentPropertiesButton,\n eventName: \"documentproperties\",\n close: true,\n },\n ];\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.buttons.push({\n element: options.openFileButton,\n eventName: \"openfile\",\n close: true,\n });\n }\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.eventBus = eventBus;\n this.opened = false;\n\n this.reset();\n\n // Bind the event listeners for click, cursor tool, and scroll/spread mode\n // actions.\n this.#bindClickListeners();\n this.#bindCursorToolsListener(options);\n this.#bindScrollModeListener(options);\n this.#bindSpreadModeListener(options);\n }\n\n /**\n * @type {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this.#updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this.#updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this.#updateUIState();\n\n // Reset the Scroll/Spread buttons too, since they're document specific.\n this.eventBus.dispatch(\"secondarytoolbarreset\", { source: this });\n }\n\n #updateUIState() {\n this.items.firstPage.disabled = this.pageNumber <= 1;\n this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n #bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener(\"click\", this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (const { element, eventName, close, eventDetails } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n const details = { source: this };\n for (const property in eventDetails) {\n details[property] = eventDetails[property];\n }\n this.eventBus.dispatch(eventName, details);\n }\n if (close) {\n this.close();\n }\n });\n }\n }\n\n #bindCursorToolsListener({ cursorSelectToolButton, cursorHandToolButton }) {\n this.eventBus._on(\"cursortoolchanged\", function ({ tool }) {\n const isSelect = tool === CursorTool.SELECT,\n isHand = tool === CursorTool.HAND;\n\n cursorSelectToolButton.classList.toggle(\"toggled\", isSelect);\n cursorHandToolButton.classList.toggle(\"toggled\", isHand);\n\n cursorSelectToolButton.setAttribute(\"aria-checked\", isSelect);\n cursorHandToolButton.setAttribute(\"aria-checked\", isHand);\n });\n }\n\n #bindScrollModeListener({\n scrollPageButton,\n scrollVerticalButton,\n scrollHorizontalButton,\n scrollWrappedButton,\n spreadNoneButton,\n spreadOddButton,\n spreadEvenButton,\n }) {\n const scrollModeChanged = ({ mode }) => {\n const isPage = mode === ScrollMode.PAGE,\n isVertical = mode === ScrollMode.VERTICAL,\n isHorizontal = mode === ScrollMode.HORIZONTAL,\n isWrapped = mode === ScrollMode.WRAPPED;\n\n scrollPageButton.classList.toggle(\"toggled\", isPage);\n scrollVerticalButton.classList.toggle(\"toggled\", isVertical);\n scrollHorizontalButton.classList.toggle(\"toggled\", isHorizontal);\n scrollWrappedButton.classList.toggle(\"toggled\", isWrapped);\n\n scrollPageButton.setAttribute(\"aria-checked\", isPage);\n scrollVerticalButton.setAttribute(\"aria-checked\", isVertical);\n scrollHorizontalButton.setAttribute(\"aria-checked\", isHorizontal);\n scrollWrappedButton.setAttribute(\"aria-checked\", isWrapped);\n\n // Permanently *disable* the Scroll buttons when PAGE-scrolling is being\n // enforced for *very* long/large documents; please see the `BaseViewer`.\n const forceScrollModePage =\n this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\n scrollPageButton.disabled = forceScrollModePage;\n scrollVerticalButton.disabled = forceScrollModePage;\n scrollHorizontalButton.disabled = forceScrollModePage;\n scrollWrappedButton.disabled = forceScrollModePage;\n\n // Temporarily *disable* the Spread buttons when horizontal scrolling is\n // enabled, since the non-default Spread modes doesn't affect the layout.\n spreadNoneButton.disabled = isHorizontal;\n spreadOddButton.disabled = isHorizontal;\n spreadEvenButton.disabled = isHorizontal;\n };\n this.eventBus._on(\"scrollmodechanged\", scrollModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n scrollModeChanged({ mode: ScrollMode.VERTICAL });\n }\n });\n }\n\n #bindSpreadModeListener({\n spreadNoneButton,\n spreadOddButton,\n spreadEvenButton,\n }) {\n function spreadModeChanged({ mode }) {\n const isNone = mode === SpreadMode.NONE,\n isOdd = mode === SpreadMode.ODD,\n isEven = mode === SpreadMode.EVEN;\n\n spreadNoneButton.classList.toggle(\"toggled\", isNone);\n spreadOddButton.classList.toggle(\"toggled\", isOdd);\n spreadEvenButton.classList.toggle(\"toggled\", isEven);\n\n spreadNoneButton.setAttribute(\"aria-checked\", isNone);\n spreadOddButton.setAttribute(\"aria-checked\", isOdd);\n spreadEvenButton.setAttribute(\"aria-checked\", isEven);\n }\n this.eventBus._on(\"spreadmodechanged\", spreadModeChanged);\n\n this.eventBus._on(\"secondarytoolbarreset\", evt => {\n if (evt.source === this) {\n spreadModeChanged({ mode: SpreadMode.NONE });\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this.toggleButton.classList.add(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"true\");\n this.toolbar.classList.remove(\"hidden\");\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toolbar.classList.add(\"hidden\");\n this.toggleButton.classList.remove(\"toggled\");\n this.toggleButton.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n}\n\nexport { SecondaryToolbar };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n DEFAULT_SCALE,\n DEFAULT_SCALE_VALUE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n} from \"./ui_utils.js\";\n\nconst PAGE_NUMBER_LOADING_INDICATOR = \"visiblePageIsLoading\";\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * Its width is adjusted, when necessary, on UI localization.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} presentationModeButton - Button to switch to\n * presentation mode.\n * @property {HTMLButtonElement} download - Button to download the document.\n * @property {HTMLAnchorElement} viewBookmark - Button to obtain a bookmark link\n * to the current location in the document.\n */\n\nclass Toolbar {\n /**\n * @param {ToolbarOptions} options\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, eventBus, l10n) {\n this.toolbar = options.container;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.buttons = [\n { element: options.previous, eventName: \"previouspage\" },\n { element: options.next, eventName: \"nextpage\" },\n { element: options.zoomIn, eventName: \"zoomin\" },\n { element: options.zoomOut, eventName: \"zoomout\" },\n { element: options.print, eventName: \"print\" },\n {\n element: options.presentationModeButton,\n eventName: \"presentationmode\",\n },\n { element: options.download, eventName: \"download\" },\n { element: options.viewBookmark, eventName: null },\n ];\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this.buttons.push({ element: options.openFile, eventName: \"openfile\" });\n }\n this.items = {\n numPages: options.numPages,\n pageNumber: options.pageNumber,\n scaleSelect: options.scaleSelect,\n customScaleOption: options.customScaleOption,\n previous: options.previous,\n next: options.next,\n zoomIn: options.zoomIn,\n zoomOut: options.zoomOut,\n };\n\n this._wasLocalized = false;\n this.reset();\n\n // Bind the event listeners for click and various other actions.\n this._bindListeners();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this._updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this._updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = (pageScaleValue || pageScale).toString();\n this.pageScale = pageScale;\n this._updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this._updateUIState(true);\n this.updateLoadingIndicatorState();\n }\n\n _bindListeners() {\n const { pageNumber, scaleSelect } = this.items;\n const self = this;\n\n // The buttons within the toolbar.\n for (const { element, eventName } of this.buttons) {\n element.addEventListener(\"click\", evt => {\n if (eventName !== null) {\n this.eventBus.dispatch(eventName, { source: this });\n }\n });\n }\n // The non-button elements within the toolbar.\n pageNumber.addEventListener(\"click\", function () {\n this.select();\n });\n pageNumber.addEventListener(\"change\", function () {\n self.eventBus.dispatch(\"pagenumberchanged\", {\n source: self,\n value: this.value,\n });\n });\n\n scaleSelect.addEventListener(\"change\", function () {\n if (this.value === \"custom\") {\n return;\n }\n self.eventBus.dispatch(\"scalechanged\", {\n source: self,\n value: this.value,\n });\n });\n // Here we depend on browsers dispatching the \"click\" event *after* the\n // \"change\" event, when the <select>-element changes.\n scaleSelect.addEventListener(\"click\", function (evt) {\n const target = evt.target;\n // Remove focus when an <option>-element was *clicked*, to improve the UX\n // for mouse users (fixes bug 1300525 and issue 4923).\n if (\n this.value === self.pageScaleValue &&\n target.tagName.toUpperCase() === \"OPTION\"\n ) {\n this.blur();\n }\n });\n // Suppress context menus for some controls.\n scaleSelect.oncontextmenu = noContextMenuHandler;\n\n this.eventBus._on(\"localized\", () => {\n this._wasLocalized = true;\n this.#adjustScaleWidth();\n this._updateUIState(true);\n });\n }\n\n _updateUIState(resetNumPages = false) {\n if (!this._wasLocalized) {\n // Don't update the UI state until we localize the toolbar.\n return;\n }\n const { pageNumber, pagesCount, pageScaleValue, pageScale, items } = this;\n\n if (resetNumPages) {\n if (this.hasPageLabels) {\n items.pageNumber.type = \"text\";\n } else {\n items.pageNumber.type = \"number\";\n this.l10n.get(\"of_pages\", { pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n }\n items.pageNumber.max = pagesCount;\n }\n\n if (this.hasPageLabels) {\n items.pageNumber.value = this.pageLabel;\n this.l10n.get(\"page_of_pages\", { pageNumber, pagesCount }).then(msg => {\n items.numPages.textContent = msg;\n });\n } else {\n items.pageNumber.value = pageNumber;\n }\n\n items.previous.disabled = pageNumber <= 1;\n items.next.disabled = pageNumber >= pagesCount;\n\n items.zoomOut.disabled = pageScale <= MIN_SCALE;\n items.zoomIn.disabled = pageScale >= MAX_SCALE;\n\n this.l10n\n .get(\"page_scale_percent\", { scale: Math.round(pageScale * 10000) / 100 })\n .then(msg => {\n let predefinedValueFound = false;\n for (const option of items.scaleSelect.options) {\n if (option.value !== pageScaleValue) {\n option.selected = false;\n continue;\n }\n option.selected = true;\n predefinedValueFound = true;\n }\n if (!predefinedValueFound) {\n items.customScaleOption.textContent = msg;\n items.customScaleOption.selected = true;\n }\n });\n }\n\n updateLoadingIndicatorState(loading = false) {\n const pageNumberInput = this.items.pageNumber;\n\n pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);\n }\n\n /**\n * Increase the width of the zoom dropdown DOM element if, and only if, it's\n * too narrow to fit the *longest* of the localized strings.\n */\n async #adjustScaleWidth() {\n const { items, l10n } = this;\n\n const predefinedValuesPromise = Promise.all([\n l10n.get(\"page_scale_auto\"),\n l10n.get(\"page_scale_actual\"),\n l10n.get(\"page_scale_fit\"),\n l10n.get(\"page_scale_width\"),\n ]);\n await animationStarted;\n\n const style = getComputedStyle(items.scaleSelect),\n scaleSelectContainerWidth = parseInt(\n style.getPropertyValue(\"--scale-select-container-width\"),\n 10\n ),\n scaleSelectOverflow = parseInt(\n style.getPropertyValue(\"--scale-select-overflow\"),\n 10\n );\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\", { alpha: false });\n ctx.font = `${style.fontSize} ${style.fontFamily}`;\n\n let maxWidth = 0;\n for (const predefinedValue of await predefinedValuesPromise) {\n const { width } = ctx.measureText(predefinedValue);\n if (width > maxWidth) {\n maxWidth = width;\n }\n }\n maxWidth += 2 * scaleSelectOverflow;\n\n if (maxWidth > scaleSelectContainerWidth) {\n const doc = document.documentElement;\n doc.style.setProperty(\"--scale-select-container-width\", `${maxWidth}px`);\n }\n // Zeroing the width and height cause Firefox to release graphics resources\n // immediately, which can greatly reduce memory consumption.\n canvas.width = 0;\n canvas.height = 0;\n }\n}\n\nexport { Toolbar };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\n/**\n * View History - This is a utility for saving various view parameters for\n * recently opened files.\n *\n * The way that the view parameters are stored depends on how PDF.js is built,\n * for 'gulp <flag>' the following cases exist:\n * - MOZCENTRAL - uses sessionStorage.\n * - GENERIC or CHROME - uses localStorage, if it is available.\n */\nclass ViewHistory {\n constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n this.fingerprint = fingerprint;\n this.cacheSize = cacheSize;\n\n this._initializedPromise = this._readFromStorage().then(databaseStr => {\n const database = JSON.parse(databaseStr || \"{}\");\n let index = -1;\n if (!Array.isArray(database.files)) {\n database.files = [];\n } else {\n while (database.files.length >= this.cacheSize) {\n database.files.shift();\n }\n\n for (let i = 0, ii = database.files.length; i < ii; i++) {\n const branch = database.files[i];\n if (branch.fingerprint === this.fingerprint) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n index = database.files.push({ fingerprint: this.fingerprint }) - 1;\n }\n this.file = database.files[index];\n this.database = database;\n });\n }\n\n async _writeToStorage() {\n const databaseStr = JSON.stringify(this.database);\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n sessionStorage.setItem(\"pdfjs.history\", databaseStr);\n return;\n }\n localStorage.setItem(\"pdfjs.history\", databaseStr);\n }\n\n async _readFromStorage() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return sessionStorage.getItem(\"pdfjs.history\");\n }\n return localStorage.getItem(\"pdfjs.history\");\n }\n\n async set(name, val) {\n await this._initializedPromise;\n this.file[name] = val;\n return this._writeToStorage();\n }\n\n async setMultiple(properties) {\n await this._initializedPromise;\n for (const name in properties) {\n this.file[name] = properties[name];\n }\n return this._writeToStorage();\n }\n\n async get(name, defaultValue) {\n await this._initializedPromise;\n const val = this.file[name];\n return val !== undefined ? val : defaultValue;\n }\n\n async getMultiple(properties) {\n await this._initializedPromise;\n const values = Object.create(null);\n\n for (const name in properties) {\n const val = this.file[name];\n values[name] = val !== undefined ? val : properties[name];\n }\n return values;\n }\n}\n\nexport { ViewHistory };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside GENERIC build.'\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager(options) {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions, OptionKind } from \"./app_options.js\";\n\n/**\n * BasePreferences - Abstract base class for storing persistent settings.\n * Used for settings that should be applied to all opened documents,\n * or every time the viewer is loaded.\n */\nclass BasePreferences {\n #defaults = Object.freeze(\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? AppOptions.getAll(OptionKind.PREFERENCE)\n : PDFJSDev.eval(\"DEFAULT_PREFERENCES\")\n );\n\n #prefs = Object.create(null);\n\n #initializedPromise = null;\n\n constructor() {\n if (this.constructor === BasePreferences) {\n throw new Error(\"Cannot initialize BasePreferences.\");\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n Object.defineProperty(this, \"defaults\", {\n get() {\n return this.#defaults;\n },\n });\n }\n\n this.#initializedPromise = this._readFromStorage(this.#defaults).then(\n prefs => {\n for (const name in this.#defaults) {\n const prefValue = prefs?.[name];\n // Ignore preferences whose types don't match the default values.\n if (typeof prefValue === typeof this.#defaults[name]) {\n this.#prefs[name] = prefValue;\n }\n }\n }\n );\n }\n\n /**\n * Stub function for writing preferences to storage.\n * @param {Object} prefObj The preferences that should be written to storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been written.\n */\n async _writeToStorage(prefObj) {\n throw new Error(\"Not implemented: _writeToStorage\");\n }\n\n /**\n * Stub function for reading preferences from storage.\n * @param {Object} prefObj The preferences that should be read from storage.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the preferences that have been read.\n */\n async _readFromStorage(prefObj) {\n throw new Error(\"Not implemented: _readFromStorage\");\n }\n\n /**\n * Reset the preferences to their default values and update storage.\n * @returns {Promise} A promise that is resolved when the preference values\n * have been reset.\n */\n async reset() {\n await this.#initializedPromise;\n const prefs = this.#prefs;\n\n this.#prefs = Object.create(null);\n return this._writeToStorage(this.#defaults).catch(reason => {\n // Revert all preference values, since writing to storage failed.\n this.#prefs = prefs;\n throw reason;\n });\n }\n\n /**\n * Set the value of a preference.\n * @param {string} name The name of the preference that should be changed.\n * @param {boolean|number|string} value The new value of the preference.\n * @returns {Promise} A promise that is resolved when the value has been set,\n * provided that the preference exists and the types match.\n */\n async set(name, value) {\n await this.#initializedPromise;\n const defaultValue = this.#defaults[name],\n prefs = this.#prefs;\n\n if (defaultValue === undefined) {\n throw new Error(`Set preference: \"${name}\" is undefined.`);\n } else if (value === undefined) {\n throw new Error(\"Set preference: no value is specified.\");\n }\n const valueType = typeof value,\n defaultType = typeof defaultValue;\n\n if (valueType !== defaultType) {\n if (valueType === \"number\" && defaultType === \"string\") {\n value = value.toString();\n } else {\n throw new Error(\n `Set preference: \"${value}\" is a ${valueType}, expected a ${defaultType}.`\n );\n }\n } else {\n if (valueType === \"number\" && !Number.isInteger(value)) {\n throw new Error(`Set preference: \"${value}\" must be an integer.`);\n }\n }\n\n this.#prefs[name] = value;\n return this._writeToStorage(this.#prefs).catch(reason => {\n // Revert all preference values, since writing to storage failed.\n this.#prefs = prefs;\n throw reason;\n });\n }\n\n /**\n * Get the value of a preference.\n * @param {string} name The name of the preference whose value is requested.\n * @returns {Promise} A promise resolved with a {boolean|number|string}\n * containing the value of the preference.\n */\n async get(name) {\n await this.#initializedPromise;\n const defaultValue = this.#defaults[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Get preference: \"${name}\" is undefined.`);\n }\n return this.#prefs[name] ?? defaultValue;\n }\n\n /**\n * Get the values of all preferences.\n * @returns {Promise} A promise that is resolved with an {Object} containing\n * the values of all preferences.\n */\n async getAll() {\n await this.#initializedPromise;\n const obj = Object.create(null);\n\n for (const name in this.#defaults) {\n obj[name] = this.#prefs[name] ?? this.#defaults[name];\n }\n return obj;\n }\n}\n\nexport { BasePreferences };\n","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n\nimport { createValidAbsoluteUrl, isPdfFile } from \"pdfjs-lib\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"CHROME || GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/download_manager\" shall not be used ' +\n \"outside CHROME and GENERIC builds.\"\n );\n}\n\nfunction download(blobUrl, filename) {\n const a = document.createElement(\"a\");\n if (!a.click) {\n throw new Error('DownloadManager: \"a.click()\" is not supported.');\n }\n a.href = blobUrl;\n a.target = \"_parent\";\n // Use a.download if available. This increases the likelihood that\n // the file is downloaded instead of opened by another PDF plugin.\n if (\"download\" in a) {\n a.download = filename;\n }\n // <a> must be in the document for recent Firefox versions,\n // otherwise .click() is ignored.\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.remove();\n}\n\n/**\n * @implements {IDownloadManager}\n */\nclass DownloadManager {\n constructor() {\n this._openBlobUrls = new WeakMap();\n }\n\n downloadUrl(url, filename) {\n if (!createValidAbsoluteUrl(url, \"http://example.com\")) {\n console.error(`downloadUrl - not a valid URL: ${url}`);\n return; // restricted/invalid URL\n }\n download(url + \"#pdfjs.action=download\", filename);\n }\n\n downloadData(data, filename, contentType) {\n const blobUrl = URL.createObjectURL(\n new Blob([data], { type: contentType })\n );\n download(blobUrl, filename);\n }\n\n /**\n * @returns {boolean} Indicating if the data was opened.\n */\n openOrDownloadData(element, data, filename) {\n const isPdfData = isPdfFile(filename);\n const contentType = isPdfData ? \"application/pdf\" : \"\";\n\n if (isPdfData) {\n let blobUrl = this._openBlobUrls.get(element);\n if (!blobUrl) {\n blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\n this._openBlobUrls.set(element, blobUrl);\n }\n let viewerUrl;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // The current URL is the viewer, let's use it and append the file.\n viewerUrl = \"?file=\" + encodeURIComponent(blobUrl + \"#\" + filename);\n } else if (PDFJSDev.test(\"CHROME\")) {\n // In the Chrome extension, the URL is rewritten using the history API\n // in viewer.js, so an absolute URL must be generated.\n viewerUrl =\n // eslint-disable-next-line no-undef\n chrome.runtime.getURL(\"/content/web/viewer.html\") +\n \"?file=\" +\n encodeURIComponent(blobUrl + \"#\" + filename);\n }\n\n try {\n window.open(viewerUrl);\n return true;\n } catch (ex) {\n console.error(`openOrDownloadData: ${ex}`);\n // Release the `blobUrl`, since opening it failed, and fallback to\n // downloading the PDF file.\n URL.revokeObjectURL(blobUrl);\n this._openBlobUrls.delete(element);\n }\n }\n\n this.downloadData(data, filename, contentType);\n return false;\n }\n\n /**\n * @param sourceEventType {string} Used to signal what triggered the download.\n * The version of PDF.js integrated with Firefox uses this to to determine\n * which dialog to show. \"save\" triggers \"save as\" and \"download\" triggers\n * the \"open with\" dialog.\n */\n download(blob, url, filename, sourceEventType = \"download\") {\n const blobUrl = URL.createObjectURL(blob);\n download(blobUrl, filename);\n }\n}\n\nexport { DownloadManager };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n\nimport \"../external/webL10n/l10n.js\";\nimport { fixupLangCode, getL10nFallback } from \"./l10n_utils.js\";\n\nconst webL10n = document.webL10n;\n\n/**\n * @implements {IL10n}\n */\nclass GenericL10n {\n constructor(lang) {\n this._lang = lang;\n this._ready = new Promise((resolve, reject) => {\n webL10n.setLanguage(fixupLangCode(lang), () => {\n resolve(webL10n);\n });\n });\n }\n\n async getLanguage() {\n const l10n = await this._ready;\n return l10n.getLanguage();\n }\n\n async getDirection() {\n const l10n = await this._ready;\n return l10n.getDirection();\n }\n\n async get(key, args = null, fallback = getL10nFallback(key, args)) {\n const l10n = await this._ready;\n return l10n.get(key, args, fallback);\n }\n\n async translate(element) {\n const l10n = await this._ready;\n return l10n.translate(element);\n }\n}\n\nexport { GenericL10n };\n","/**\n * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/*\n Additional modifications for PDF.js project:\n - Disables language initialization on page loading.\n - Disables document translation on page loading.\n - Removes consoleWarn and consoleLog and use console.log/warn directly.\n - Removes window._ assignment.\n - Remove compatibility code for OldIE.\n - Replaces `String.prototype.substr()` with `String.prototype.substring()`.\n - Removes `fireL10nReadyEvent` since the \"localized\" event it dispatches\n is unused and may clash with an identically named event in the viewer.\n*/\n\n/*jshint browser: true, devel: true, es5: true, globalstrict: true */\n'use strict';\n\ndocument.webL10n = (function(window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n\n\n /**\n * Synchronously loading l10n resources significantly minimizes flickering\n * from displaying the app with non-localized strings and then updating the\n * strings. Although this will block all script execution on this page, we\n * expect that the l10n resources are available locally on flash-storage.\n *\n * As synchronous XHR is generally considered as a bad idea, we're still\n * loading l10n resources asynchronously -- but we keep this in a setting,\n * just in case... and applications using this library should hide their\n * content until the `localized' event happens.\n */\n\n var gAsyncResourceLoading = true; // read-only\n\n\n /**\n * DOM helpers for the so-called \"HTML API\".\n *\n * These functions are written for modern browsers. For old versions of IE,\n * they're overridden in the 'startup' section at the end of this file.\n */\n\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n // TODO: support multiple and external JSON dictionaries\n return script ? JSON.parse(script.innerHTML) : null;\n }\n\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n\n function getL10nAttributes(element) {\n if (!element)\n return {};\n\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return { id: l10nId, args: args };\n }\n\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n\n // in Firefox OS with the app:// protocol, trying to XHR a non-existing\n // URL will raise an exception here -- hence this ugly try...catch.\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n\n\n /**\n * l10n resource parser:\n * - reads (async XHR) the l10n resource matching `lang';\n * - imports linked resources (synchronously) when specified;\n * - parses the text data (fills `gL10nData' and `gTextData');\n * - triggers success/failure callbacks when done.\n *\n * @param {string} href\n * URL of the l10n resource to parse.\n *\n * @param {string} lang\n * locale (language) to parse. Must be a lowercase string.\n *\n * @param {Function} successCallback\n * triggered when the l10n resource has been successfully parsed.\n *\n * @param {Function} failureCallback\n * triggered when the an error has occurred.\n *\n * @return {void}\n * uses the following global variables: gL10nData, gTextData, gTextProp.\n */\n\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n\n // handle escaped characters (backslashes) in a string\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0)\n return text;\n return text.replace(/\\\\\\\\/g, '\\\\')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\b/g, '\\b')\n .replace(/\\\\f/g, '\\f')\n .replace(/\\\\{/g, '{')\n .replace(/\\\\}/g, '}')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\'/g, \"'\");\n }\n\n // parse *.properties text data into an l10n dictionary\n // If gAsyncResourceLoading is false, then the callback will be called\n // synchronously. Otherwise it is called asynchronously.\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n\n // token expressions\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/; // TODO: escape EOLs with '\\'\n\n // parse the *.properties file into an associative array\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n\n function nextEntry() {\n // Use infinite loop instead of recursion to avoid reaching the\n // maximum recursion limit for content with many lines.\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n\n // comment or blank line?\n if (reComment.test(line))\n continue;\n\n // the extended syntax supports [lang] sections and @import rules\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) { // section start?\n // RFC 4646, section 4.4, \"All comparisons MUST be performed\n // in a case-insensitive manner.\"\n\n currentLang = match[1].toLowerCase();\n skipLang = (currentLang !== '*') &&\n (currentLang !== lang) && (currentLang !== genericLang);\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) { // @import rule?\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n\n // key-value pair\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n\n // import another *.properties file\n function loadImport(url, callback) {\n xhrLoadText(url, function(content) {\n parseRawLines(content, false, callback); // don't allow recursive imports\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n\n // fill the dictionary\n parseRawLines(text, true, function() {\n parsedPropertiesCallback(dictionary);\n });\n }\n\n // load and parse l10n data (warning: global variables are used here)\n xhrLoadText(href, function(response) {\n gTextData += response; // mostly for debug\n\n // parse *.properties text data into an l10n dictionary\n parseProperties(response, function(data) {\n\n // find attribute descriptions, if any\n for (var key in data) {\n var id, prop, index = key.lastIndexOf('.');\n if (index > 0) { // an attribute has been specified\n id = key.substring(0, index);\n prop = key.substring(index + 1);\n } else { // no attribute: assuming text content by default\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n\n // trigger callback\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n\n // load and parse all resources for the specified locale\n function loadLocale(lang, callback) {\n // RFC 4646, section 2.1 states that language tags have to be treated as\n // case-insensitive. Convert to lowercase for case-insensitive comparisons.\n if (lang) {\n lang = lang.toLowerCase();\n }\n\n callback = callback || function _callback() {};\n\n clear();\n gLanguage = lang;\n\n // check all <link type=\"application/l10n\" href=\"...\" /> nodes\n // and load the resource files\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n // we might have a pre-compiled dictionary instead\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n // early way out\n gReadyState = 'complete';\n return;\n }\n\n // start the callback when all resources are loaded\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n gReadyState = 'complete';\n }\n };\n\n // load all resource files\n function L10nResourceLink(link) {\n var href = link.href;\n // Note: If |gAsyncResourceLoading| is false, then the following callbacks\n // are synchronously called.\n this.load = function(lang, callback) {\n parseResource(href, lang, callback, function() {\n console.warn(href + ' not found.');\n // lang not found, used default resource instead\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n // Resource not loaded, but we still need to call the callback.\n callback();\n });\n };\n }\n\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n\n // clear all l10n data\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n // TODO: clear all non predefined macros.\n // There's no such macro /yet/ but we're planning to have some...\n }\n\n\n /**\n * Get rules for plural forms (shared with JetPack), see:\n * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html\n * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p\n *\n * @param {string} lang\n * locale (language) used.\n *\n * @return {Function}\n * returns a function that gives the plural form name for a given integer:\n * var fun = getPluralRules('en');\n * fun(1) -> 'one'\n * fun(0) -> 'other'\n * fun(1000) -> 'other'.\n */\n\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n\n // utility functions for plural rules methods\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n\n // list of all plural rules methods:\n // map an integer to the plural form name to use\n var pluralRules = {\n '0': function(n) {\n return 'other';\n },\n '1': function(n) {\n if ((isBetween((n % 100), 3, 10)))\n return 'few';\n if (n === 0)\n return 'zero';\n if ((isBetween((n % 100), 11, 99)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '2': function(n) {\n if (n !== 0 && (n % 10) === 0)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '3': function(n) {\n if (n == 1)\n return 'one';\n return 'other';\n },\n '4': function(n) {\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '5': function(n) {\n if ((isBetween(n, 0, 2)) && n != 2)\n return 'one';\n return 'other';\n },\n '6': function(n) {\n if (n === 0)\n return 'zero';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '7': function(n) {\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '8': function(n) {\n if ((isBetween(n, 3, 6)))\n return 'few';\n if ((isBetween(n, 7, 10)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '9': function(n) {\n if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '10': function(n) {\n if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))\n return 'few';\n if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))\n return 'one';\n return 'other';\n },\n '11': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if ((n % 10) === 0 ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 11, 14)))\n return 'many';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '12': function(n) {\n if ((isBetween(n, 2, 4)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '13': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if (n != 1 && (isBetween((n % 10), 0, 1)) ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 12, 14)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '14': function(n) {\n if ((isBetween((n % 100), 3, 4)))\n return 'few';\n if ((n % 100) == 2)\n return 'two';\n if ((n % 100) == 1)\n return 'one';\n return 'other';\n },\n '15': function(n) {\n if (n === 0 || (isBetween((n % 100), 2, 10)))\n return 'few';\n if ((isBetween((n % 100), 11, 19)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '16': function(n) {\n if ((n % 10) == 1 && n != 11)\n return 'one';\n return 'other';\n },\n '17': function(n) {\n if (n == 3)\n return 'few';\n if (n === 0)\n return 'zero';\n if (n == 6)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '18': function(n) {\n if (n === 0)\n return 'zero';\n if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)\n return 'one';\n return 'other';\n },\n '19': function(n) {\n if ((isBetween(n, 2, 10)))\n return 'few';\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '20': function(n) {\n if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(\n isBetween((n % 100), 10, 19) ||\n isBetween((n % 100), 70, 79) ||\n isBetween((n % 100), 90, 99)\n ))\n return 'few';\n if ((n % 1000000) === 0 && n !== 0)\n return 'many';\n if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))\n return 'two';\n if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))\n return 'one';\n return 'other';\n },\n '21': function(n) {\n if (n === 0)\n return 'zero';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '22': function(n) {\n if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))\n return 'one';\n return 'other';\n },\n '23': function(n) {\n if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)\n return 'one';\n return 'other';\n },\n '24': function(n) {\n if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))\n return 'few';\n if (isIn(n, [2, 12]))\n return 'two';\n if (isIn(n, [1, 11]))\n return 'one';\n return 'other';\n }\n };\n\n // return a function that gives the plural form name for a given integer\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function() { return 'other'; };\n }\n return pluralRules[index];\n }\n\n // pre-defined 'plural' macro\n gMacros.plural = function(str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n))\n return str;\n\n // TODO: support other properties (l20n still doesn't...)\n if (prop != gTextProp)\n return str;\n\n // initialize _pluralRules\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n\n // try to find a [zero|one|two] key if it's defined\n if (n === 0 && (key + '[zero]') in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && (key + '[one]') in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && (key + '[two]') in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if ((key + index) in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if ((key + '[other]') in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n\n return str;\n };\n\n\n /**\n * l10n dictionary functions\n */\n\n // fetch an l10n object, warn if not found, apply `args' if possible\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n\n /** This is where l10n expressions should be processed.\n * The plan is to support C-style expressions from the l20n project;\n * until then, only two kinds of simple expressions are supported:\n * {[ index ]} and {{ arguments }}.\n */\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n\n // replace {[macros]} with their values\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length)\n return str;\n\n // an index/macro has been found\n // Note: at the moment, only one parameter is supported\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n\n // there's no macro parser yet: it has to be defined in gMacros\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n\n // replace {{arguments}} with their values\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function(matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n\n // translate an HTML element\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id)\n return;\n\n // get the related l10n object\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n\n // translate element (TODO: security checks?)\n if (data[gTextProp]) { // XXX\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n // this element has element children: replace the content of the first\n // (non-empty) child textNode and clear other child textNodes\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n // if no (non-empty) textNode is found, insert a textNode before the\n // first element child.\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n\n for (var k in data) {\n element[k] = data[k];\n }\n }\n\n // webkit browsers don't currently support 'children' on SVG elements...\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n\n // translate an HTML subtree\n function translateFragment(element) {\n element = element || document.documentElement;\n\n // check all translatable children (= w/ a `data-l10n-id' attribute)\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n\n // translate element itself if necessary\n translateElement(element);\n }\n\n return {\n // get a localized string\n get: function(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) { // An attribute has been specified\n prop = key.substring(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n\n // debug\n getData: function() { return gL10nData; },\n getText: function() { return gTextData; },\n\n // get|set the document language\n getLanguage: function() { return gLanguage; },\n setLanguage: function(lang, callback) {\n loadLocale(lang, function() {\n if (callback)\n callback();\n });\n },\n\n // get the direction (ltr|rtl) of the current language\n getDirection: function() {\n // http://www.w3.org/International/questions/qa-scripts\n // Arabic, Hebrew, Farsi, Pashto, Urdu\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr';\n },\n\n // translate an element or document fragment\n translate: translateFragment,\n\n // this can be used to prevent race conditions\n getReadyState: function() { return gReadyState; },\n ready: function(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function() {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}) (window, document);\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getPdfFilenameFromUrl, loadScript } from \"pdfjs-lib\";\n\nasync function docPropertiesLookup(pdfDocument) {\n const url = \"\",\n baseUrl = url.split(\"#\")[0];\n // eslint-disable-next-line prefer-const\n let { info, metadata, contentDispositionFilename, contentLength } =\n await pdfDocument.getMetadata();\n\n if (!contentLength) {\n const { length } = await pdfDocument.getDownloadInfo();\n contentLength = length;\n }\n\n return {\n ...info,\n baseURL: baseUrl,\n filesize: contentLength,\n filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\n metadata: metadata?.getRaw(),\n authors: metadata?.get(\"dc:creator\"),\n numPages: pdfDocument.numPages,\n URL: url,\n };\n}\n\nclass GenericScripting {\n constructor(sandboxBundleSrc) {\n this._ready = loadScript(\n sandboxBundleSrc,\n /* removeScriptElement = */ true\n ).then(() => {\n return window.pdfjsSandbox.QuickJSSandbox();\n });\n }\n\n async createSandbox(data) {\n const sandbox = await this._ready;\n sandbox.create(data);\n }\n\n async dispatchEventInSandbox(event) {\n const sandbox = await this._ready;\n setTimeout(() => sandbox.dispatchEvent(event), 0);\n }\n\n async destroySandbox() {\n const sandbox = await this._ready;\n sandbox.nukeSandbox();\n }\n}\n\nexport { docPropertiesLookup, GenericScripting };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationMode, PixelsPerInch } from \"pdfjs-lib\";\nimport { PDFPrintServiceFactory, PDFViewerApplication } from \"./app.js\";\nimport { getXfaHtmlForPrinting } from \"./print_utils.js\";\n\nlet activeService = null;\nlet dialog = null;\nlet overlayManager = null;\n\n// Renders the page to the canvas of the given print service, and returns\n// the suggested dimensions of the output page.\nfunction renderPage(\n activeServiceOnEntry,\n pdfDocument,\n pageNumber,\n size,\n printResolution,\n optionalContentConfigPromise\n) {\n const scratchCanvas = activeService.scratchCanvas;\n\n // The size of the canvas in pixels for printing.\n const PRINT_UNITS = printResolution / PixelsPerInch.PDF;\n scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n\n const ctx = scratchCanvas.getContext(\"2d\");\n ctx.save();\n ctx.fillStyle = \"rgb(255, 255, 255)\";\n ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n ctx.restore();\n\n return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n const renderContext = {\n canvasContext: ctx,\n transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\n intent: \"print\",\n annotationMode: AnnotationMode.ENABLE_STORAGE,\n optionalContentConfigPromise,\n };\n return pdfPage.render(renderContext).promise;\n });\n}\n\nfunction PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise = null,\n l10n\n) {\n this.pdfDocument = pdfDocument;\n this.pagesOverview = pagesOverview;\n this.printContainer = printContainer;\n this._printResolution = printResolution || 150;\n this._optionalContentConfigPromise =\n optionalContentConfigPromise || pdfDocument.getOptionalContentConfig();\n this.l10n = l10n;\n this.currentPage = -1;\n // The temporary canvas where renderPage paints one page at a time.\n this.scratchCanvas = document.createElement(\"canvas\");\n}\n\nPDFPrintService.prototype = {\n layout() {\n this.throwIfInactive();\n\n const body = document.querySelector(\"body\");\n body.setAttribute(\"data-pdfjsprinting\", true);\n\n const hasEqualPageSizes = this.pagesOverview.every(function (size) {\n return (\n size.width === this.pagesOverview[0].width &&\n size.height === this.pagesOverview[0].height\n );\n }, this);\n if (!hasEqualPageSizes) {\n console.warn(\n \"Not all pages have the same size. The printed \" +\n \"result may be incorrect!\"\n );\n }\n\n // Insert a @page + size rule to make sure that the page size is correctly\n // set. Note that we assume that all pages have the same size, because\n // variable-size pages are not supported yet (e.g. in Chrome & Firefox).\n // TODO(robwu): Use named pages when size calculation bugs get resolved\n // (e.g. https://crbug.com/355116) AND when support for named pages is\n // added (http://www.w3.org/TR/css3-page/#using-named-pages).\n // In browsers where @page + size is not supported (such as Firefox,\n // https://bugzil.la/851441), the next stylesheet will be ignored and the\n // user has to select the correct paper size in the UI if wanted.\n this.pageStyleSheet = document.createElement(\"style\");\n const pageSize = this.pagesOverview[0];\n this.pageStyleSheet.textContent =\n \"@page { size: \" + pageSize.width + \"pt \" + pageSize.height + \"pt;}\";\n body.appendChild(this.pageStyleSheet);\n },\n\n destroy() {\n if (activeService !== this) {\n // |activeService| cannot be replaced without calling destroy() first,\n // so if it differs then an external consumer has a stale reference to us.\n return;\n }\n this.printContainer.textContent = \"\";\n\n const body = document.querySelector(\"body\");\n body.removeAttribute(\"data-pdfjsprinting\");\n\n if (this.pageStyleSheet) {\n this.pageStyleSheet.remove();\n this.pageStyleSheet = null;\n }\n this.scratchCanvas.width = this.scratchCanvas.height = 0;\n this.scratchCanvas = null;\n activeService = null;\n ensureOverlay().then(function () {\n if (overlayManager.active === dialog) {\n overlayManager.close(dialog);\n }\n });\n },\n\n renderPages() {\n if (this.pdfDocument.isPureXfa) {\n getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\n return Promise.resolve();\n }\n\n const pageCount = this.pagesOverview.length;\n const renderNextPage = (resolve, reject) => {\n this.throwIfInactive();\n if (++this.currentPage >= pageCount) {\n renderProgress(pageCount, pageCount, this.l10n);\n resolve();\n return;\n }\n const index = this.currentPage;\n renderProgress(index, pageCount, this.l10n);\n renderPage(\n this,\n this.pdfDocument,\n /* pageNumber = */ index + 1,\n this.pagesOverview[index],\n this._printResolution,\n this._optionalContentConfigPromise\n )\n .then(this.useRenderedPage.bind(this))\n .then(function () {\n renderNextPage(resolve, reject);\n }, reject);\n };\n return new Promise(renderNextPage);\n },\n\n useRenderedPage() {\n this.throwIfInactive();\n const img = document.createElement(\"img\");\n const scratchCanvas = this.scratchCanvas;\n if (\"toBlob\" in scratchCanvas) {\n scratchCanvas.toBlob(function (blob) {\n img.src = URL.createObjectURL(blob);\n });\n } else {\n img.src = scratchCanvas.toDataURL();\n }\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"printedPage\";\n wrapper.appendChild(img);\n this.printContainer.appendChild(wrapper);\n\n return new Promise(function (resolve, reject) {\n img.onload = resolve;\n img.onerror = reject;\n });\n },\n\n performPrint() {\n this.throwIfInactive();\n return new Promise(resolve => {\n // Push window.print in the macrotask queue to avoid being affected by\n // the deprecation of running print() code in a microtask, see\n // https://github.com/mozilla/pdf.js/issues/7547.\n setTimeout(() => {\n if (!this.active) {\n resolve();\n return;\n }\n print.call(window);\n // Delay promise resolution in case print() was not synchronous.\n setTimeout(resolve, 20); // Tidy-up.\n }, 0);\n });\n },\n\n get active() {\n return this === activeService;\n },\n\n throwIfInactive() {\n if (!this.active) {\n throw new Error(\"This print request was cancelled or completed.\");\n }\n },\n};\n\nconst print = window.print;\nwindow.print = function () {\n if (activeService) {\n console.warn(\"Ignored window.print() because of a pending print job.\");\n return;\n }\n ensureOverlay().then(function () {\n if (activeService) {\n overlayManager.open(dialog);\n }\n });\n\n try {\n dispatchEvent(\"beforeprint\");\n } finally {\n if (!activeService) {\n console.error(\"Expected print service to be initialized.\");\n ensureOverlay().then(function () {\n if (overlayManager.active === dialog) {\n overlayManager.close(dialog);\n }\n });\n return; // eslint-disable-line no-unsafe-finally\n }\n const activeServiceOnEntry = activeService;\n activeService\n .renderPages()\n .then(function () {\n return activeServiceOnEntry.performPrint();\n })\n .catch(function () {\n // Ignore any error messages.\n })\n .then(function () {\n // aborts acts on the \"active\" print request, so we need to check\n // whether the print request (activeServiceOnEntry) is still active.\n // Without the check, an unrelated print request (created after aborting\n // this print request while the pages were being generated) would be\n // aborted.\n if (activeServiceOnEntry.active) {\n abort();\n }\n });\n }\n};\n\nfunction dispatchEvent(eventType) {\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventType, false, false, \"custom\");\n window.dispatchEvent(event);\n}\n\nfunction abort() {\n if (activeService) {\n activeService.destroy();\n dispatchEvent(\"afterprint\");\n }\n}\n\nfunction renderProgress(index, total, l10n) {\n dialog ||= document.getElementById(\"printServiceDialog\");\n const progress = Math.round((100 * index) / total);\n const progressBar = dialog.querySelector(\"progress\");\n const progressPerc = dialog.querySelector(\".relative-progress\");\n progressBar.value = progress;\n l10n.get(\"print_progress_percent\", { progress }).then(msg => {\n progressPerc.textContent = msg;\n });\n}\n\nwindow.addEventListener(\n \"keydown\",\n function (event) {\n // Intercept Cmd/Ctrl + P in all browsers.\n // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera\n if (\n event.keyCode === /* P= */ 80 &&\n (event.ctrlKey || event.metaKey) &&\n !event.altKey &&\n (!event.shiftKey || window.chrome || window.opera)\n ) {\n window.print();\n\n // The (browser) print dialog cannot be prevented from being shown in\n // IE11.\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n }\n },\n true\n);\n\nif (\"onbeforeprint\" in window) {\n // Do not propagate before/afterprint events when they are not triggered\n // from within this polyfill. (FF / Chrome 63+).\n const stopPropagationIfNeeded = function (event) {\n if (event.detail !== \"custom\" && event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n }\n };\n window.addEventListener(\"beforeprint\", stopPropagationIfNeeded);\n window.addEventListener(\"afterprint\", stopPropagationIfNeeded);\n}\n\nlet overlayPromise;\nfunction ensureOverlay() {\n if (!overlayPromise) {\n overlayManager = PDFViewerApplication.overlayManager;\n if (!overlayManager) {\n throw new Error(\"The overlay manager has not yet been initialized.\");\n }\n dialog ||= document.getElementById(\"printServiceDialog\");\n\n overlayPromise = overlayManager.register(\n dialog,\n /* canForceClose = */ true\n );\n\n document.getElementById(\"printCancel\").onclick = abort;\n dialog.addEventListener(\"close\", abort);\n }\n return overlayPromise;\n}\n\nPDFPrintServiceFactory.instance = {\n supportsPrinting: true,\n\n createPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n ) {\n if (activeService) {\n throw new Error(\"The print service is created and active.\");\n }\n activeService = new PDFPrintService(\n pdfDocument,\n pagesOverview,\n printContainer,\n printResolution,\n optionalContentConfigPromise,\n l10n\n );\n return activeService;\n },\n};\n\nexport { PDFPrintService };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getXfaPageViewport, PixelsPerInch } from \"pdfjs-lib\";\nimport { SimpleLinkService } from \"./pdf_link_service.js\";\nimport { XfaLayerBuilder } from \"./xfa_layer_builder.js\";\n\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\n const xfaHtml = pdfDocument.allXfaHtml;\n const linkService = new SimpleLinkService();\n const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;\n\n for (const xfaPage of xfaHtml.children) {\n const page = document.createElement(\"div\");\n page.className = \"xfaPrintedPage\";\n printContainer.appendChild(page);\n\n const builder = new XfaLayerBuilder({\n pageDiv: page,\n pdfPage: null,\n annotationStorage: pdfDocument.annotationStorage,\n linkService,\n xfaHtml: xfaPage,\n });\n const viewport = getXfaPageViewport(xfaPage, { scale });\n\n builder.render(viewport, \"print\");\n }\n}\n\nexport { getXfaHtmlForPrinting };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppOptions } from \"./app_options.js\";\nimport { PDFViewerApplication } from \"./app.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nwindow.PDFViewerApplication = PDFViewerApplication;\nwindow.PDFViewerApplicationOptions = AppOptions;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n var defaultUrl; // eslint-disable-line no-var\n\n (function rewriteUrlClosure() {\n // Run this code outside DOMContentLoaded to make sure that the URL\n // is rewritten as soon as possible.\n const queryString = document.location.search.slice(1);\n const m = /(^|&)file=([^&]*)/.exec(queryString);\n defaultUrl = m ? decodeURIComponent(m[2]) : \"\";\n\n // Example: chrome-extension://.../http://example.com/file.pdf\n const humanReadableUrl = \"/\" + defaultUrl + location.hash;\n history.replaceState(history.state, \"\", humanReadableUrl);\n if (top === window) {\n // eslint-disable-next-line no-undef\n chrome.runtime.sendMessage(\"showPageAction\");\n }\n })();\n}\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n require(\"./firefoxcom.js\");\n require(\"./firefox_print_service.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n require(\"./genericcom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n require(\"./chromecom.js\");\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME || GENERIC\")) {\n require(\"./pdf_print_service.js\");\n}\n\nfunction getViewerConfiguration() {\n let errorWrapper = null;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n errorWrapper = {\n container: document.getElementById(\"errorWrapper\"),\n errorMessage: document.getElementById(\"errorMessage\"),\n closeButton: document.getElementById(\"errorClose\"),\n errorMoreInfo: document.getElementById(\"errorMoreInfo\"),\n moreInfoButton: document.getElementById(\"errorShowMore\"),\n lessInfoButton: document.getElementById(\"errorShowLess\"),\n };\n }\n\n return {\n appContainer: document.body,\n mainContainer: document.getElementById(\"viewerContainer\"),\n viewerContainer: document.getElementById(\"viewer\"),\n toolbar: {\n container: document.getElementById(\"toolbarViewer\"),\n numPages: document.getElementById(\"numPages\"),\n pageNumber: document.getElementById(\"pageNumber\"),\n scaleSelect: document.getElementById(\"scaleSelect\"),\n customScaleOption: document.getElementById(\"customScaleOption\"),\n previous: document.getElementById(\"previous\"),\n next: document.getElementById(\"next\"),\n zoomIn: document.getElementById(\"zoomIn\"),\n zoomOut: document.getElementById(\"zoomOut\"),\n viewFind: document.getElementById(\"viewFind\"),\n openFile:\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")\n ? document.getElementById(\"openFile\")\n : null,\n print: document.getElementById(\"print\"),\n presentationModeButton: document.getElementById(\"presentationMode\"),\n download: document.getElementById(\"download\"),\n viewBookmark: document.getElementById(\"viewBookmark\"),\n },\n secondaryToolbar: {\n toolbar: document.getElementById(\"secondaryToolbar\"),\n toggleButton: document.getElementById(\"secondaryToolbarToggle\"),\n presentationModeButton: document.getElementById(\n \"secondaryPresentationMode\"\n ),\n openFileButton:\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")\n ? document.getElementById(\"secondaryOpenFile\")\n : null,\n printButton: document.getElementById(\"secondaryPrint\"),\n downloadButton: document.getElementById(\"secondaryDownload\"),\n viewBookmarkButton: document.getElementById(\"secondaryViewBookmark\"),\n firstPageButton: document.getElementById(\"firstPage\"),\n lastPageButton: document.getElementById(\"lastPage\"),\n pageRotateCwButton: document.getElementById(\"pageRotateCw\"),\n pageRotateCcwButton: document.getElementById(\"pageRotateCcw\"),\n cursorSelectToolButton: document.getElementById(\"cursorSelectTool\"),\n cursorHandToolButton: document.getElementById(\"cursorHandTool\"),\n scrollPageButton: document.getElementById(\"scrollPage\"),\n scrollVerticalButton: document.getElementById(\"scrollVertical\"),\n scrollHorizontalButton: document.getElementById(\"scrollHorizontal\"),\n scrollWrappedButton: document.getElementById(\"scrollWrapped\"),\n spreadNoneButton: document.getElementById(\"spreadNone\"),\n spreadOddButton: document.getElementById(\"spreadOdd\"),\n spreadEvenButton: document.getElementById(\"spreadEven\"),\n documentPropertiesButton: document.getElementById(\"documentProperties\"),\n },\n sidebar: {\n // Divs (and sidebar button)\n outerContainer: document.getElementById(\"outerContainer\"),\n sidebarContainer: document.getElementById(\"sidebarContainer\"),\n toggleButton: document.getElementById(\"sidebarToggle\"),\n // Buttons\n thumbnailButton: document.getElementById(\"viewThumbnail\"),\n outlineButton: document.getElementById(\"viewOutline\"),\n attachmentsButton: document.getElementById(\"viewAttachments\"),\n layersButton: document.getElementById(\"viewLayers\"),\n // Views\n thumbnailView: document.getElementById(\"thumbnailView\"),\n outlineView: document.getElementById(\"outlineView\"),\n attachmentsView: document.getElementById(\"attachmentsView\"),\n layersView: document.getElementById(\"layersView\"),\n // View-specific options\n outlineOptionsContainer: document.getElementById(\n \"outlineOptionsContainer\"\n ),\n currentOutlineItemButton: document.getElementById(\"currentOutlineItem\"),\n },\n sidebarResizer: {\n outerContainer: document.getElementById(\"outerContainer\"),\n resizer: document.getElementById(\"sidebarResizer\"),\n },\n findBar: {\n bar: document.getElementById(\"findbar\"),\n toggleButton: document.getElementById(\"viewFind\"),\n findField: document.getElementById(\"findInput\"),\n highlightAllCheckbox: document.getElementById(\"findHighlightAll\"),\n caseSensitiveCheckbox: document.getElementById(\"findMatchCase\"),\n matchDiacriticsCheckbox: document.getElementById(\"findMatchDiacritics\"),\n entireWordCheckbox: document.getElementById(\"findEntireWord\"),\n findMsg: document.getElementById(\"findMsg\"),\n findResultsCount: document.getElementById(\"findResultsCount\"),\n findPreviousButton: document.getElementById(\"findPrevious\"),\n findNextButton: document.getElementById(\"findNext\"),\n },\n passwordOverlay: {\n dialog: document.getElementById(\"passwordDialog\"),\n label: document.getElementById(\"passwordText\"),\n input: document.getElementById(\"password\"),\n submitButton: document.getElementById(\"passwordSubmit\"),\n cancelButton: document.getElementById(\"passwordCancel\"),\n },\n documentProperties: {\n dialog: document.getElementById(\"documentPropertiesDialog\"),\n closeButton: document.getElementById(\"documentPropertiesClose\"),\n fields: {\n fileName: document.getElementById(\"fileNameField\"),\n fileSize: document.getElementById(\"fileSizeField\"),\n title: document.getElementById(\"titleField\"),\n author: document.getElementById(\"authorField\"),\n subject: document.getElementById(\"subjectField\"),\n keywords: document.getElementById(\"keywordsField\"),\n creationDate: document.getElementById(\"creationDateField\"),\n modificationDate: document.getElementById(\"modificationDateField\"),\n creator: document.getElementById(\"creatorField\"),\n producer: document.getElementById(\"producerField\"),\n version: document.getElementById(\"versionField\"),\n pageCount: document.getElementById(\"pageCountField\"),\n pageSize: document.getElementById(\"pageSizeField\"),\n linearized: document.getElementById(\"linearizedField\"),\n },\n },\n errorWrapper,\n printContainer: document.getElementById(\"printContainer\"),\n openFileInput:\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")\n ? document.getElementById(\"fileInput\")\n : null,\n debuggerScriptPath: \"./debugger.js\",\n };\n}\n\nfunction webViewerLoad() {\n const config = getViewerConfiguration();\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n if (window.chrome) {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = \"../build/dev-css/viewer.css\";\n\n document.head.appendChild(link);\n }\n\n Promise.all([\n import(\"pdfjs-web/genericcom.js\"),\n import(\"pdfjs-web/pdf_print_service.js\"),\n ]).then(function ([genericCom, pdfPrintService]) {\n PDFViewerApplication.run(config);\n });\n } else {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n AppOptions.set(\"defaultUrl\", defaultUrl);\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // Give custom implementations of the default viewer a simpler way to\n // set various `AppOptions`, by dispatching an event once all viewer\n // files are loaded but *before* the viewer initialization has run.\n const event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"webviewerloaded\", true, true, {\n source: window,\n });\n try {\n // Attempt to dispatch the event at the embedding `document`,\n // in order to support cases where the viewer is embedded in\n // a *dynamically* created <iframe> element.\n parent.document.dispatchEvent(event);\n } catch (ex) {\n // The viewer could be in e.g. a cross-origin <iframe> element,\n // fallback to dispatching the event at the current `document`.\n console.error(`webviewerloaded: ${ex}`);\n document.dispatchEvent(event);\n }\n }\n\n PDFViewerApplication.run(config);\n }\n}\n\n// Block the \"load\" event until all pages are loaded, to ensure that printing\n// works in Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1618553\ndocument.blockUnblockOnload?.(true);\n\nif (\n document.readyState === \"interactive\" ||\n document.readyState === \"complete\"\n) {\n webViewerLoad();\n} else {\n document.addEventListener(\"DOMContentLoaded\", webViewerLoad, true);\n}\n\nexport { PDFViewerApplication, AppOptions as PDFViewerApplicationOptions };\n"],"names":["compatibilityParams","Object","create","userAgent","navigator","platform","maxTouchPoints","isAndroid","test","isIOS","checkCanvasSizeLimitation","maxCanvasPixels","OptionKind","VIEWER","API","WORKER","PREFERENCE","defaultOptions","annotationMode","value","kind","cursorToolOnLoad","defaultUrl","defaultZoomValue","disableHistory","disablePageLabels","enablePermissions","enablePrintAutoRotate","enableScripting","externalLinkRel","externalLinkTarget","historyUpdateUrl","ignoreDestinationZoom","imageResourcesPath","compatibility","pageColorsBackground","pageColorsForeground","pdfBugEnabled","printResolution","renderer","sidebarViewOnLoad","scrollModeOnLoad","spreadModeOnLoad","textLayerMode","useOnlyCssZoom","viewerCssTheme","viewOnLoad","cMapPacked","cMapUrl","disableAutoFetch","disableFontFace","disableRange","disableStream","docBaseUrl","enableXfa","fontExtraProperties","isEvalSupported","maxImageSize","pdfBug","standardFontDataUrl","verbosity","workerPort","workerSrc","disablePreferences","locale","language","sandboxBundleSrc","userOptions","AppOptions","constructor","Error","get","name","userOption","undefined","defaultOption","getAll","options","valueType","Number","isInteger","set","setAll","remove","_hasUserOptions","keys","length","DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT","FORCE_PAGES_LOADED_TIMEOUT","WHEEL_ZOOM_DISABLED_TIMEOUT","ViewOnLoad","UNKNOWN","PREVIOUS","INITIAL","ViewerCssTheme","AUTOMATIC","LIGHT","DARK","KNOWN_VERSIONS","KNOWN_GENERATORS","DefaultExternalServices","updateFindControlState","data","updateFindMatchesCount","initPassiveLoading","callbacks","reportTelemetry","createDownloadManager","createPreferences","createL10n","createScripting","supportsIntegratedFind","shadow","supportsDocumentFonts","supportedMouseWheelZoomModifierKeys","ctrlKey","metaKey","isInAutomation","PDFViewerApplication","initialBookmark","document","location","hash","substring","_initializedCapability","createPromiseCapability","appConfig","pdfDocument","pdfLoadingTask","printService","pdfViewer","pdfThumbnailViewer","pdfRenderingQueue","pdfPresentationMode","pdfDocumentProperties","pdfLinkService","pdfHistory","pdfSidebar","pdfSidebarResizer","pdfOutlineViewer","pdfAttachmentViewer","pdfLayerViewer","pdfCursorTools","pdfScriptingManager","store","downloadManager","overlayManager","preferences","toolbar","secondaryToolbar","eventBus","l10n","isInitialViewSet","downloadComplete","isViewerEmbedded","window","parent","url","baseUrl","_downloadUrl","externalServices","_boundEvents","documentInfo","metadata","_contentDispositionFilename","_contentLength","_saveInProgress","_docStats","_wheelUnusedTicks","_idleCallbacks","Set","_PDFBug","initialize","_readPreferences","_parseHashParameters","_forceCssTheme","_initializeL10n","LinkTarget","NONE","TOP","_initializeViewerComponents","bindEvents","bindWindowEvents","appContainer","documentElement","translate","then","dispatch","source","resolve","console","warn","reason","error","message","mainContainer","viewerContainer","params","parseQueryString","loadFakeWorker","ex","has","TextLayerMode","DISABLE","classList","add","loadPDFBug","loadCSS","enabled","split","init","OPS","dir","getDirection","getElementsByTagName","cssTheme","values","includes","styleSheet","styleSheets","cssRules","i","ii","rule","CSSMediaRule","media","deleteRule","darkRules","exec","cssText","insertRule","AutomationEventBus","EventBus","OverlayManager","PDFRenderingQueue","onIdle","_cleanup","bind","PDFLinkService","findController","PDFFindController","linkService","PDFScriptingManager","scriptingFactory","docPropertiesLookup","_scriptingDocProperties","container","viewer","PDFViewer","renderingQueue","scriptingManager","pageColors","background","foreground","setViewer","PDFThumbnailViewer","sidebar","thumbnailView","setThumbnailViewer","PDFHistory","setHistory","findBar","PDFFindBar","PDFDocumentProperties","documentProperties","PDFCursorTools","Toolbar","SecondaryToolbar","supportsFullscreen","PDFPresentationMode","passwordPrompt","PasswordPrompt","passwordOverlay","PDFOutlineViewer","outlineView","PDFAttachmentViewer","attachmentsView","PDFLayerViewer","layersView","PDFSidebar","elements","onToggled","forceRendering","PDFSidebarResizer","sidebarResizer","run","config","webViewerInitialized","initialized","settled","initializedPromise","promise","zoomIn","steps","isInPresentationMode","increaseScale","zoomOut","decreaseScale","zoomReset","currentScaleValue","DEFAULT_SCALE_VALUE","pagesCount","numPages","page","currentPageNumber","val","supportsPrinting","PDFPrintServiceFactory","instance","fullscreenEnabled","loadingBar","bar","ProgressBar","setTitleUsingUrl","downloadUrl","title","getPdfFilenameFromUrl","decodeURIComponent","getFilenameFromUrl","setTitle","_docFilename","_hideViewBookmark","viewBookmark","hidden","viewBookmarkButton","_cancelIdleCallbacks","size","callback","cancelIdleCallback","clear","close","_unblockDocumentLoadEvent","errorWrapper","annotationStorage","_annotationStorageModified","save","sourceEventType","promises","push","destroy","setDocument","externalLinkEnabled","destroyPromise","reset","cleanup","Promise","all","open","file","args","workerParameters","key","GlobalWorkerOptions","parameters","originalUrl","apiParameters","loadingTask","getDocument","onPassword","updateCallback","setUpdateCallback","onProgress","loaded","total","progress","onUnsupportedFeature","fallback","load","InvalidPDFException","MissingPDFException","UnexpectedResponseException","msg","_documentError","_ensureDownloadComplete","download","filename","getData","blob","Blob","type","dispatchWillSave","saveDocument","dispatchDidSave","downloadOrSave","featureId","moreInfo","_otherError","moreInfoText","version","build","stack","lineNumber","line","errorWrapperConfig","errorMessage","textContent","closeButton","onclick","errorMoreInfo","moreInfoButton","lessInfoButton","style","height","scrollHeight","oncontextmenu","noContextMenuHandler","parts","join","level","percent","Math","round","isNaN","loadingParams","disableAutoFetchLoadingBarTimeout","clearTimeout","show","setTimeout","hide","getDownloadInfo","firstPagePromise","pageLayoutPromise","getPageLayout","catch","pageModePromise","getPageMode","openActionPromise","getOpenAction","setPagesCount","baseDocumentUrl","onePageRendered","pagesPromise","storedPromise","ViewHistory","fingerprints","getMultiple","zoom","scrollLeft","scrollTop","rotation","sidebarView","SidebarView","scrollMode","ScrollMode","spreadMode","SpreadMode","pdfPage","setWidth","_initializeAnnotationStorageCallbacks","animationStarted","timeStamp","stored","pageLayout","pageMode","openAction","_initializePdfHistory","fingerprint","initialDest","dest","parseInt","apiPageModeToSidebarView","modes","apiPageLayoutToViewerModes","setInitialView","focus","race","hasEqualPageSizes","update","_initializeAutoPrint","timestamp","getOutline","outline","render","getAttachments","attachments","optionalContentConfigPromise","optionalContentConfig","requestIdleCallback","_collectTelemetry","delete","timeout","_initializePageLabels","_initializeMetadata","_on","once","baseURL","filesize","getRaw","authors","URL","markInfo","getMarkInfo","tagged","Marked","javaScript","getJavaScript","triggerAutoPrint","action","some","js","UNSUPPORTED_FEATURES","AutoPrintRegExp","triggerPrinting","info","contentDispositionFilename","contentLength","getMetadata","log","PDFFormatVersion","Producer","trim","Creator","pdfTitle","Title","metadataTitle","IsXFAPresent","IsAcroFormPresent","isPureXfa","forms","renderForms","IsSignaturesPresent","signatures","versionId","replace","generatorId","producer","toLowerCase","generator","formType","labels","getPageLabels","numLabels","standardLabels","emptyLabels","label","toString","setPageLabels","setPageNumber","currentPageLabel","resetHistory","updateUrl","initialRotation","JSON","stringify","explicitDest","pageNumber","onSetModified","addEventListener","beforeUnload","onResetModified","removeEventListener","storedHash","setRotation","angle","isValidRotation","pagesRotation","setViewerModes","scroll","spread","isValidScrollMode","isValidSpreadMode","setHash","RendererType","SVG","printing","isThumbnailViewEnabled","isThumbnailViewVisible","renderHighestPriority","beforePrint","dispatchWillPrint","pageViewsReady","alert","pagesOverview","getPagesOverview","printContainer","createPrintService","layout","afterPrint","dispatchDidPrint","resetModified","rotatePages","delta","requestPresentationMode","request","print","webViewerResize","webViewerHashchange","webViewerPageRendered","webViewerUpdateViewarea","webViewerPageChanging","webViewerScaleChanging","webViewerRotationChanging","webViewerSidebarViewChanged","webViewerPageMode","webViewerNamedAction","webViewerPresentationModeChanged","webViewerPresentationMode","webViewerPrint","webViewerDownload","webViewerSave","webViewerFirstPage","webViewerLastPage","webViewerNextPage","webViewerPreviousPage","webViewerZoomIn","webViewerZoomOut","webViewerZoomReset","webViewerPageNumberChanged","webViewerScaleChanged","webViewerRotateCw","webViewerRotateCcw","webViewerOptionalContentConfig","webViewerSwitchScrollMode","webViewerScrollModeChanged","webViewerSwitchSpreadMode","webViewerSpreadModeChanged","webViewerDocumentProperties","webViewerFindFromUrlHash","webViewerUpdateFindMatchesCount","webViewerUpdateFindControlState","reportPageStatsPDFBug","webViewerFileInputChange","webViewerOpenFile","windowResize","windowHashChange","windowBeforePrint","windowAfterPrint","windowUpdateFromSandbox","event","detail","webViewerVisibilityChange","webViewerWheel","passive","webViewerTouchStart","webViewerClick","webViewerKeyDown","unbindEvents","_off","unbindWindowEvents","accumulateWheelTicks","ticks","wholeTicks","sign","floor","abs","blockUnblockOnload","_reportDocumentStatsTelemetry","stats","scriptingReady","ready","validateFileURL","HOSTED_VIEWER_ORIGINS","viewerOrigin","href","origin","fileOrigin","loadScript","PDFWorker","self","debuggerScriptPath","PDFBug","import","globalThis","Stats","pageView","getPageView","queryString","search","fileInput","openFileInput","evt","files","target","preventDefault","dataTransfer","dropEffect","printButton","presentationModeButton","viewFind","updateLoadingIndicatorState","getThumbnail","setImage","mode","view","THUMBS","OUTLINE","ATTACHMENTS","LAYERS","switchView","select","toggle","presentationModeState","state","setMultiple","scale","left","top","getAnchorUrl","pdfOpenParams","currentPage","loading","renderingState","RenderingStates","FINISHED","updateContainerHeightCss","popStateInProgress","createObjectURL","click","nextPage","previousPage","goToPage","query","phraseSearch","caseSensitive","entireWord","highlightAll","findPrevious","matchDiacritics","matchesCount","updateResultsCount","previous","rawQuery","result","updateUIState","setPageScale","presetValue","pageLabel","scrollThumbnailIntoView","visibilityState","setZoomDisabledTimeout","zoomDisabledTimeout","deltaMode","normalizeWheelEventDirection","previousScale","currentScale","WheelEvent","DOM_DELTA_LINE","DOM_DELTA_PAGE","PIXELS_PER_LINE_SCALE","scaleCorrectionFactor","rect","getBoundingClientRect","dx","clientX","dy","clientY","touches","isOpen","containsElement","contains","toggleButton","active","isViewerInPresentationMode","handled","ensureViewerFocused","cmd","altKey","shiftKey","keyCode","eventState","assign","curElement","getActiveOrFocusedElement","curElementTagName","tagName","toUpperCase","isContentEditable","turnPage","turnOnlyIfPageFit","isVerticalScrollbarEnabled","isHorizontalScrollbarEnabled","opened","switchTool","CursorTool","SELECT","HAND","returnValue","DEFAULT_SCALE","DEFAULT_SCALE_DELTA","MIN_SCALE","MAX_SCALE","UNKNOWN_SCALE","MAX_AUTO_SCALE","SCROLLBAR_PADDING","VERTICAL_PADDING","RUNNING","PAUSED","PresentationModeState","NORMAL","CHANGING","FULLSCREEN","CANVAS","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","PAGE","ODD","EVEN","OutputScale","pixelRatio","devicePixelRatio","sx","sy","scaled","scrollIntoView","element","spot","scrollMatches","offsetParent","offsetY","offsetTop","clientTop","offsetX","offsetLeft","clientLeft","clientHeight","clientWidth","scrollWidth","getComputedStyle","overflow","watchScroll","viewAreaElement","debounceScroll","rAF","requestAnimationFrame","viewAreaElementScrolled","currentX","lastX","right","currentY","lastY","down","_eventHandler","Map","URLSearchParams","NullCharactersRegExp","InvisibleCharactersRegExp","removeNullCharacters","str","replaceInvisible","binarySearchFirstItem","items","condition","start","minIndex","maxIndex","currentIndex","currentItem","approximateFraction","x","xinv","limit","x_","a","b","c","d","p","q","roundToDivide","div","r","getPageSizeInches","userUnit","rotate","x1","y1","x2","y2","changeOrientation","width","backtrackBeforeAllVisibleElements","index","views","elt","pageTop","getVisibleElements","scrollEl","sortByVisibility","horizontal","rtl","bottom","isElementBottomAfterViewTop","elementBottom","isElementNextAfterViewHorizontally","elementLeft","elementRight","visible","ids","numViews","firstVisibleElementInd","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","max","hiddenWidth","fractionHeight","fractionWidth","id","y","widthPercent","first","last","sort","pc","hypot","deltaX","deltaY","atan2","PI","normalizeWheelEventDelta","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","isPortraitOrientation","clamp","v","min","arguments","querySelector","parentNode","updateBar","_indeterminate","doc","setProperty","_percent","scrollbarWidth","offsetWidth","curRoot","curActiveOrFocused","activeElement","shadowRoot","WaitOnType","EVENT","TIMEOUT","waitOnEventOrTimeout","delay","reject","handler","eventHandler","timeoutHandler","_listeners","on","eventName","listener","external","off","eventListeners","externalListeners","slice","splice","pdfjsLib","__non_webpack_require__","module","exports","ZOOM","activeBeforePresentationMode","handTool","GrabToPan","addEventListeners","activeTool","tool","disableActiveTool","deactivate","activate","dispatchEvent","previouslyActive","CSS_CLASS_GRAB","ownerDocument","ignoreTarget","onActiveChanged","_onMouseDown","onMouseDown","_onMouseMove","onMouseMove","_endPan","endPan","overlay","createElement","className","node","matches","button","originalTarget","e","scrollLeftStart","scrollTopStart","clientXStart","clientYStart","stopPropagation","focusedElement","blur","buttons","xDiff","yDiff","scrollTo","behavior","body","appendChild","DEFAULT_LINK_REL","SELF","BLANK","PARENT","addLinkAttributes","link","rel","urlNullRemoved","targetStr","pagesRefCache","_ignoreDestinationZoom","goToDestinationHelper","rawDest","namedDest","destRef","_cachedPageNumber","getPageIndex","pageIndex","cachePageRef","pushCurrentPosition","scrollPageIntoView","destArray","goToDestination","getDestination","Array","isArray","pageLabelToPageNumber","pushPage","newWindow","getDestinationHash","escape","anchor","zoomArgs","zoomArg","zoomArgNumber","parseFloat","allowNegativeOffset","unescape","parse","isValidExplicitDestination","executeNamedAction","back","forward","pageNum","pageRef","refStr","gen","num","isPageVisible","isPageCached","destLength","allowNull","param","SimpleLinkService","overlays","WeakMap","register","dialog","canForceClose","unregister","showModal","input","submitButton","cancelButton","_isViewerEmbedded","verify","cancel","passwordIncorrect","PasswordResponses","INCORRECT_PASSWORD","password","invokeCallback","BaseTreeViewer","appendAttachment","keepRenderedCapability","_attachments","_renderedCapability","_pendingDispatchEvent","_dispatchEvent","attachmentsCount","_bindLink","content","openOrDownloadData","names","localeCompare","fragment","createDocumentFragment","item","_normalizeTextContent","_finishRendering","renderedPromise","TREEITEM_OFFSET_TOP","TREEITEM_SELECTED_CLASS","_pdfDocument","_lastToggleIsShow","_currentTreeItem","count","_addToggleButton","toggler","shouldShowAll","_toggleTreeItem","insertBefore","firstChild","root","querySelectorAll","_toggleAllTreeItems","hasAnyNesting","_updateCurrentTreeItem","treeItem","_scrollToCurrentTreeItem","currentNode","firstElementChild","DEFAULT_FIELD_CONTENT","NON_METRIC_LOCALES","US_PAGE_NAMES","METRIC_PAGE_NAMES","getPageName","isPortrait","pageNames","fieldData","fields","_currentPageNumber","_pagesRotation","_isNonMetricLocale","getLanguage","_dataAvailableCapability","updateUI","fileName","fileSize","creationDate","modificationDate","pageSize","isLinearized","parseFileSize","parseDate","CreationDate","ModDate","getPage","parsePageSize","parseLinearization","IsLinearized","freeze","author","Author","subject","Subject","keywords","Keywords","creator","pageCount","linearized","kb","mb","size_mb","toPrecision","toLocaleString","size_kb","size_b","pageSizeInches","sizeInches","sizeMillimeters","rawName","exactMillimeters","intMillimeters","unit","orientation","inputDate","dateObject","PDFDateString","toDateObject","date","toLocaleDateString","time","toLocaleTimeString","MATCHES_COUNT_LIMIT","findField","highlightAllCheckbox","caseSensitiveCheckbox","matchDiacriticsCheckbox","entireWordCheckbox","findMsg","findResultsCount","findPreviousButton","findNextButton","adjustWidth","findPrev","checked","status","FindState","FOUND","PENDING","NOT_FOUND","setAttribute","current","matchCountMsg","findbarHeight","inputContainerHeight","FIND_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","CHARACTERS_TO_NORMALIZE","DIACRITICS_EXCEPTION","DIACRITICS_EXCEPTION_STR","map","String","fromCharCode","DIACRITICS_REG_EXP","SPECIAL_CHARS_REG_EXP","NOT_DIACRITIC_FROM_END_REG_EXP","NOT_DIACRITIC_FROM_START_REG_EXP","normalizationRegex","normalize","text","RegExp","rawDiacriticsPositions","m","normalized","positions","k","shift","shiftOrigin","eol","hasDiacritics","match","p1","p2","p3","p4","replacement","jj","j","hasTrailingDashEOL","endsWith","len","charAt","getOriginalIndex","diffs","pos","end","_linkService","_eventBus","onFind","onFindBarClose","highlightMatches","_highlightMatches","pageMatches","_pageMatches","pageMatchesLength","_pageMatchesLength","selected","_selected","_state","_firstPageCapability","shouldDirtyMatch","_dirtyMatch","extractText","findbarClosed","pendingTimeout","_findTimeout","nextMatch","updateAllPages","scrollMatchIntoView","selectedLeft","matchIndex","_scrollMatches","matchIdx","pageIdx","_offset","wrapped","_extractTextPromises","_pageContents","_pageDiffs","_hasDiacritics","_matchesCountTotal","_pagesToSearch","_pendingFindMatches","_resumePageIdx","_rawQuery","_normalizedQuery","isEntireWord","startIdx","charCodeAt","getCharacterType","calculateRegExpMatch","pageContent","matchesLength","matchPos","matchLen","convertToRegExpString","isUnicode","p5","trailingSpaces","calculateMatch","reverse","isUnicodePart","queryPart","flags","updatePage","nextPageMatch","pageMatchesCount","updateUIResultsCount","extractTextCapability","getTextContent","strBuf","textItem","hasEOL","currentPageIndex","offset","numPageMatches","updateMatch","advanceOffsetPage","matchesReady","numMatches","found","requestMatchesCount","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","isAlphabeticalScript","charCode","isAscii","isAsciiAlpha","isAsciiDigit","isAsciiSpace","isHan","isKatakana","isHiragana","isHalfwidthKatakana","isThai","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","getCurrentHash","_initialized","_fingerprint","_isPagesLoaded","reInitialized","_updateUrl","_bindEvents","history","_popStateInProgress","_blockHashChange","_currentHash","_numPositionUpdates","_uid","_maxUid","_destination","_position","_isValidState","_parseCurrentHash","_pushOrReplaceState","destination","_updateInternalState","uid","_initialRotation","_initialBookmark","_pageHide","_unbindEvents","_updateViewareaTimeout","_isValidPage","forceReplace","isDestHashesEqual","isDestArraysEqual","_tryPushCurrentPosition","shouldReplace","newState","newUrl","startsWith","replaceState","pushState","temporary","position","checkReload","perfEntry","performance","getEntriesByType","removeTemporary","checkNameddest","nameddest","_updateViewarea","_popState","newHash","hashChanged","updateViewarea","popState","pageHide","destHash","pushHash","firstDest","secondDest","isEntryEqual","second","_resetLayers","_optionalContentConfig","layersCount","groupId","setVisibility","_setNestedName","fontStyle","groups","getOrder","queue","levelData","itemsDiv","order","group","getGroup","getOptionalContentConfig","_currentOutlineItem","_currentOutlineItemCapability","_sidebarView","_outline","_pageNumberToDestHashCapability","outlineCount","currentOutlineItemPromise","_setStyles","bold","italic","fontWeight","totalCount","nestedCount","nestedItems","pageNumberToDestHash","_getPageNumberToDestHash","linkElement","pageNumberNesting","nesting","currentNesting","DELAY_BEFORE_HIDING_CONTROLS","ACTIVE_SELECTOR","CONTROLS_SELECTOR","MOUSE_SCROLL_COOLDOWN_TIME","PAGE_SWITCH_THRESHOLD","SWIPE_MIN_DISTANCE_THRESHOLD","SWIPE_ANGLE_THRESHOLD","contextMenuOpen","mouseScrollTimeStamp","mouseScrollDelta","touchSwipeState","requestFullscreen","addFullscreenChangeListeners","notifyStateChange","scaleValue","removeFullscreenChangeListeners","mouseWheel","currentTime","Date","now","storedTime","resetMouseScrollState","totalDelta","success","enter","addWindowListeners","showControls","getSelection","removeAllRanges","exit","removeWindowListeners","hideControls","mouseDown","isInternalLink","contextMenu","controlsTimeout","touchSwipe","startX","pageX","startY","pageY","endX","endY","absAngle","showControlsBind","mouseDownBind","mouseWheelBind","resetMouseScrollStateBind","contextMenuBind","touchSwipeBind","fullscreenChange","fullscreenElement","fullscreenChangeBind","CLEANUP_TIMEOUT","highestPriorityPage","idleTimeout","isHighestPriority","renderingId","hasViewer","currentlyVisiblePages","getHighestPriority","scrolledDown","preRenderExtra","visibleViews","numVisible","isViewFinished","firstId","lastId","visibleIds","holeId","holeView","preRenderIndex","preRenderView","renderView","resume","draw","finally","RenderingCancelledException","_pdfViewer","_closeCapability","_destroyCapability","_scripting","_mouseState","_ready","_sandboxBundleSrc","_scriptingFactory","_docPropertiesLookup","_destroyScripting","objects","calculationOrder","docActions","getFieldObjects","getCalculationOrderIds","getJSActions","_createScripting","_internalEvents","_updateFromSandbox","dispatchEventInSandbox","_dispatchPageClose","_dispatchPageOpen","_pageOpenPending","_domEvents","isDown","docProperties","_getDocProperties","createSandbox","appInfo","docInfo","actions","mouseState","_visitedPages","isChangingPresentationMode","siblings","command","elementId","getElementById","CustomEvent","setValue","visitedPages","actionsPromise","destroySandbox","UI_NOTIFICATION_CLASS","outerContainer","sidebarContainer","thumbnailButton","outlineButton","attachmentsButton","layersButton","_outlineOptionsContainer","outlineOptionsContainer","_currentOutlineItemButton","currentOutlineItemButton","_addEventListeners","_hideUINotification","disabled","visibleView","isOutlineViewVisible","isAttachmentsViewVisible","isLayersViewVisible","_switchView","forceOpen","isViewChanged","shouldForceRendering","isThumbs","isOutline","isAttachments","isLayers","_updateThumbnailViewer","_forceRendering","_showUINotification","onTreeLoaded","SIDEBAR_WIDTH_VAR","SIDEBAR_MIN_WIDTH","SIDEBAR_RESIZING_CLASS","isRTL","sidebarOpen","_width","_outerContainerWidth","resizer","outerContainerWidth","_updateWidth","maxWidth","_mouseMove","_mouseUp","mouseMove","mouseUp","updated","THUMBNAIL_SCROLL_MARGIN","THUMBNAIL_SELECTED_CLASS","_scrollUpdated","_resetView","_setImageDisabled","_thumbnails","_getVisibleThumbs","prevThumbnailView","shouldScroll","updateArgs","thumbnail","TempImageFactory","destroyCanvas","_pageLabels","_optionalContentConfigPromise","_cancelRendering","firstPdfPage","viewport","getViewport","checkSetImageDisabled","PDFThumbnailView","defaultViewport","clone","firstThumbnailView","setPdfPage","cancelRendering","setPageLabel","ensurePdfPageLoaded","thumbView","getScrollAhead","visibleThumbs","scrollAhead","DRAW_UPSCALE_FACTOR","MAX_NUM_SCALING_STEPS","THUMBNAIL_CANVAS_BORDER_WIDTH","THUMBNAIL_WIDTH","tempCanvas","getCanvas","ctx","getContext","alpha","fillStyle","fillRect","restore","pdfPageRotate","renderTask","_checkSetImageDisabled","pageWidth","pageHeight","pageRatio","canvasWidth","canvasHeight","_thumbPageTitle","ring","borderAdjustment","totalRotation","removeAttribute","canvas","image","_getPageDrawContext","upscaleFactor","outputScale","transform","_convertCanvasToImage","reducedCanvas","_reduceImage","_thumbPageCanvas","src","toDataURL","finishRenderTask","drawViewport","renderContinueCallback","cont","renderContext","canvasContext","onContinue","resultPromise","pageCached","img","drawImage","reducedWidth","reducedHeight","reducedImage","reducedImageCtx","BaseViewer","PDFSinglePageViewer","_scrollMode","_spreadMode","_updateScrollMode","_updateSpreadMode","DEFAULT_CACHE_SIZE","ENABLE_PERMISSIONS_CLASS","PagesCountLimit","FORCE_SCROLL_MODE_PAGE","FORCE_LAZY_PAGE_INIT","PAUSE_EAGER_PAGE_INIT","PDFPageViewBuffer","buf","destroyFirstView","resize","newSize","idsToKeep","Symbol","iterator","firstView","next","buffer","AnnotationMode","ENABLE_FORMS","previousAnnotationMode","previousContainerHeight","scrollModePageState","onVisibilityChange","viewerVersion","_scriptingManager","removePageBorders","NullL10n","CSS","supports","defaultRenderingQueue","_doc","_scrollUpdate","_onBeforeDraw","_onAfterDraw","_pages","_pagesCapability","every","_setCurrentPageNumber","resetCurrentPageView","indexOf","_currentScale","_setScale","_currentScaleValue","_onePageRenderedCapability","initializePermissions","permissions","PermissionFlag","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","onePageRenderedOrForceFetch","_getVisiblePages","visibilityChangePromise","permissionsPromise","getPermissions","cssTransform","viewerElement","PixelsPerInch","PDF_TO_CSS_UNITS","textLayerFactory","annotationLayerFactory","xfaLayerFactory","PDFPageView","textHighlighterFactory","structTreeLayerFactory","firstPageView","ref","ensurePageViewVisible","getPagesLeft","Language","lang","_location","_previousScrollMode","previousPageNumber","scrollDown","pages","pageIndexSet","parity","dummyPage","pageSpot","isSameScale","newScale","_setScaleUpdatePages","newValue","noScroll","preset","_pageWidthScaleFactor","hPadding","vPadding","pageWidthScale","pageHeightScale","horizontalScale","widthScale","heightScale","boundingRect","convertToViewportPoint","_updateLocation","firstPage","normalizedScaleValue","currentPageView","topLeft","getPagePoint","intLeft","intTop","visiblePages","numVisiblePages","newCacheSize","isSimpleLayout","currentId","stillFullyVisible","_isContainerRtl","direction","toggleLoadingIconSpinner","createTextLayerBuilder","textLayerDiv","enhanceTextSelection","highlighter","TextLayerBuilder","createTextHighlighter","TextHighlighter","createAnnotationLayerBuilder","pageDiv","hasJSActionsPromise","fieldObjectsPromise","annotationCanvasMap","AnnotationLayerBuilder","hasJSActions","createXfaLayerBuilder","XfaLayerBuilder","createStructTreeLayerBuilder","StructTreeLayerBuilder","cloneNode","_getPageAdvance","yArray","expectedId","advance","toFixed","ceil","_hasJSActionsPromise","_fieldObjectsPromise","_annotationCanvasMap","_cancelled","intent","annotations","fieldObjects","getAnnotations","dontFlip","AnnotationLayer","DEFAULT_L10N_STRINGS","of_pages","page_of_pages","document_properties_kb","document_properties_mb","document_properties_date_string","document_properties_page_size_unit_inches","document_properties_page_size_unit_millimeters","document_properties_page_size_orientation_portrait","document_properties_page_size_orientation_landscape","document_properties_page_size_name_a3","document_properties_page_size_name_a4","document_properties_page_size_name_letter","document_properties_page_size_name_legal","document_properties_page_size_dimension_string","document_properties_page_size_dimension_name_string","document_properties_linearized_yes","document_properties_linearized_no","print_progress_percent","additional_layers","page_landmark","thumb_page_title","thumb_page_canvas","find_reached_top","find_reached_bottom","find_not_found","error_version_info","error_message","error_stack","error_file","error_line","rendering_error","page_scale_width","page_scale_fit","page_scale_auto","page_scale_actual","page_scale_percent","loading_error","invalid_file_error","missing_file_error","unexpected_response_error","printing_not_supported","printing_not_ready","web_fonts_disabled","getL10nFallback","PARTIAL_LANG_CODES","en","es","fy","ga","gu","hi","hy","nb","ne","nn","pa","pt","sv","zh","fixupLangCode","langCode","formatL10nValue","MAX_CANVAS_PIXELS","hasRestrictedScaling","textHighlighter","paintTask","paintedViewportMap","_renderError","_isStandalone","annotationLayer","textLayer","zoomLayer","xfaLayer","structTreeLayer","_renderAnnotationLayer","_renderXfaLayer","_buildXfaTextContentItems","textDivs","setTextMapping","enable","_resetZoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotationLayer","keepXfaLayer","childNodes","zoomLayerNode","annotationLayerNode","xfaLayerNode","svg","loadingIconDiv","redrawAnnotationLayer","redrawXfaLayer","isScalingRestricted","disable","_onTextLayerRendered","relativeRotation","absRotation","scaleX","scaleY","textLayerViewport","textRelativeRotation","textAbsRotation","transX","transY","transformOrigin","convertToPdfPoint","viewVisible","canvasWrapper","finishPaintTask","paintOnSvg","paintOnCanvas","onRenderContinue","readableStream","streamTextContent","includeMarkedContent","setTextContentStream","getStructTree","tree","treeDom","renderCapability","isCanvasHidden","showCanvas","actualSizeViewport","pixelsInViewport","maxScale","sqrt","sfx","sfy","wrapper","cancelled","ensureNotCancelled","getOperatorList","opList","svgGfx","SVGGraphics","commonObjs","objs","getSVG","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","P","H","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","structTree","_walk","_setAttributes","structElement","htmlElement","alt","role","children","kid","_onUpdateTextLayerMatches","textContentItemsStr","divs","texts","_updateMatches","_convertMatches","iIndex","mm","begin","divIdx","_renderMatches","isSelectedPage","selectedMatchIdx","prevEnd","infinity","beginText","appendTextToDiv","fromOffset","toOffset","nodeType","Node","TEXT_NODE","span","createTextNode","i0","i1","isSelected","highlightSuffix","n0","n1","clearedUntilDivIdx","n","EXPAND_DIVS_TIMEOUT","textContentStream","renderingDone","textLayerRenderTask","_bindMouse","endOfContent","numTextDivs","textLayerFrag","renderTextLayer","setTextContent","expandDivsTimer","expandTextDivs","adjustTop","getPropertyValue","divBounds","xfaHtml","XfaLayer","getXfa","downloadButton","firstPageButton","lastPageButton","pageRotateCwButton","pageRotateCcwButton","cursorSelectToolButton","eventDetails","cursorHandToolButton","scrollPageButton","scrollVerticalButton","scrollHorizontalButton","scrollWrappedButton","spreadNoneButton","spreadOddButton","spreadEvenButton","documentPropertiesButton","openFileButton","lastPage","pageRotateCw","pageRotateCcw","bindClickListeners","bindCursorToolsListener","bindScrollModeListener","bindSpreadModeListener","details","property","isSelect","isHand","scrollModeChanged","isPage","isVertical","isHorizontal","isWrapped","forceScrollModePage","spreadModeChanged","isNone","isOdd","isEven","PAGE_NUMBER_LOADING_INDICATOR","openFile","scaleSelect","customScaleOption","_wasLocalized","_bindListeners","_updateUIState","hasPageLabels","pageScaleValue","pageScale","adjustScaleWidth","resetNumPages","predefinedValueFound","option","pageNumberInput","predefinedValuesPromise","scaleSelectContainerWidth","scaleSelectOverflow","font","fontSize","fontFamily","predefinedValue","measureText","DEFAULT_VIEW_HISTORY_CACHE_SIZE","cacheSize","_initializedPromise","_readFromStorage","databaseStr","database","branch","_writeToStorage","localStorage","setItem","getItem","properties","defaultValue","GenericCom","GenericPreferences","BasePreferences","prefObj","GenericExternalServices","DownloadManager","GenericL10n","GenericScripting","defaults","prefs","prefValue","defaultType","obj","blobUrl","_openBlobUrls","createValidAbsoluteUrl","downloadData","contentType","isPdfData","isPdfFile","viewerUrl","encodeURIComponent","revokeObjectURL","webL10n","_lang","setLanguage","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","getL10nResourceLinks","getL10nDictionary","script","innerHTML","getTranslatableChildren","getL10nAttributes","l10nId","getAttribute","l10nArgs","xhrLoadText","onSuccess","onFailure","_onSuccess","_onFailure","xhr","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","responseText","onerror","ontimeout","send","parseResource","successCallback","failureCallback","evalString","lastIndexOf","parseProperties","parsedPropertiesCallback","dictionary","reBlank","reComment","reSection","reImport","reSplit","parseRawLines","rawText","extendedSyntax","parsedRawLinesCallback","entries","currentLang","genericLang","skipLang","nextEntry","loadImport","tmp","response","prop","loadLocale","_callback","langLinks","langCount","dict","locales","default_locale","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","L10nResourceLink","resource","getPluralRules","locales2rules","isIn","list","isBetween","pluralRules","plural","_pluralRules","getL10nData","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","matched_text","arg","translateElement","getChildElementCount","l","nodeValue","textNode","childElementCount","translateFragment","elementCount","fallbackString","getText","rtlList","shortCode","getReadyState","pdfjsSandbox","QuickJSSandbox","sandbox","nukeSandbox","activeService","renderPage","activeServiceOnEntry","scratchCanvas","PRINT_UNITS","PDF","ENABLE_STORAGE","PDFPrintService","_printResolution","prototype","throwIfInactive","pageStyleSheet","ensureOverlay","renderPages","getXfaHtmlForPrinting","renderNextPage","renderProgress","useRenderedPage","toBlob","onload","performPrint","call","abort","eventType","createEvent","initCustomEvent","progressBar","progressPerc","chrome","opera","stopImmediatePropagation","stopPropagationIfNeeded","overlayPromise","allXfaHtml","xfaPage","builder","getXfaPageViewport","pdfjsVersion","pdfjsBuild","PDFViewerApplicationOptions","require","getViewerConfiguration","webViewerLoad"],"sourceRoot":""} \ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 720e88e..1c6fa75 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,7 @@
"dependencies": {
"@nextcloud/logger": "^2.1.0",
"@nextcloud/router": "^2.0.0",
- "pdfjs-dist": "^2.13.216"
+ "pdfjs-dist": "^2.14.305"
},
"devDependencies": {
"@nextcloud/babel-config": "^1.0.0",
@@ -4610,6 +4610,11 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dommatrix": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz",
+ "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww=="
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -8929,11 +8934,12 @@
}
},
"node_modules/pdfjs-dist": {
- "version": "2.13.216",
- "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.13.216.tgz",
- "integrity": "sha512-qn/9a/3IHIKZarTK6ajeeFXBkG15Lg1Fx99PxU09PAU2i874X8mTcHJYyDJxu7WDfNhV6hM7bRQBZU384anoqQ==",
+ "version": "2.14.305",
+ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.14.305.tgz",
+ "integrity": "sha512-5f7i25J1dKIBczhgfxEgNxfYNIxXEdxqo6Qb4ehY7Ja+p6AI4uUmk/OcVGXfRGm2ys5iaJJhJUwBFwv6Jl/Qww==",
"dependencies": {
- "web-streams-polyfill": "^3.2.0"
+ "dommatrix": "^1.0.1",
+ "web-streams-polyfill": "^3.2.1"
},
"peerDependencies": {
"worker-loader": "^3.0.8"
@@ -11473,9 +11479,9 @@
}
},
"node_modules/web-streams-polyfill": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
- "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
"engines": {
"node": ">= 8"
}
@@ -15672,6 +15678,11 @@
"domelementtype": "^2.2.0"
}
},
+ "dommatrix": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz",
+ "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww=="
+ },
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -18994,11 +19005,12 @@
}
},
"pdfjs-dist": {
- "version": "2.13.216",
- "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.13.216.tgz",
- "integrity": "sha512-qn/9a/3IHIKZarTK6ajeeFXBkG15Lg1Fx99PxU09PAU2i874X8mTcHJYyDJxu7WDfNhV6hM7bRQBZU384anoqQ==",
+ "version": "2.14.305",
+ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.14.305.tgz",
+ "integrity": "sha512-5f7i25J1dKIBczhgfxEgNxfYNIxXEdxqo6Qb4ehY7Ja+p6AI4uUmk/OcVGXfRGm2ys5iaJJhJUwBFwv6Jl/Qww==",
"requires": {
- "web-streams-polyfill": "^3.2.0"
+ "dommatrix": "^1.0.1",
+ "web-streams-polyfill": "^3.2.1"
}
},
"performance-now": {
@@ -20996,9 +21008,9 @@
}
},
"web-streams-polyfill": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
- "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA=="
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
},
"webpack": {
"version": "5.67.0",
diff --git a/package.json b/package.json
index 6e39cf9..83bd4b3 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"dependencies": {
"@nextcloud/logger": "^2.1.0",
"@nextcloud/router": "^2.0.0",
- "pdfjs-dist": "^2.13.216"
+ "pdfjs-dist": "^2.14.305"
},
"browserslist": [
"extends @nextcloud/browserslist-config"